2016-04-07 13 views
0

Ich habe eine Tabelle, die eine primaryCustomerID und PositionCode-Spalten hat. Die PriamryCustomerID enthält die Bankport-ID des Kunden und der PositionCode den Code der Bankprodukte (WSO und PB).Auswahl von Clients mit nur einem Produkt in der SQL-Datenbank

Ich muss Clients mit WSO PositionCode auswählen, aber es darf keinen PB-Code haben. Wenn Clients ausgewählt werden, bei denen PositionCode WSO ist, schließt dies die PB-Clients aus, aber das bedeutet nicht, dass die Clients kein PB haben.

bitte helfen. Danke

+0

Bitte Beispieldaten geben Sie Ihre Daten zu zeigen, und Ihr Problem zu klären. 10 Datenzeilen wären genug. Zeigen Sie auch das erwartete Ergebnis. –

+0

SQL-Server und MySQL? welcher? – Tanner

+0

Wenn Sie sql-server verwenden, warum markieren Sie mysql? ... bitte entfernen Sie die unpassenden Tags – scaisEdge

Antwort

0

Dies wird alle Kunden mit einem Positionscode = 'WSO' auflisten, die auch keine Zeile mit Positionscode = 'PB' haben. Sollte sowohl auf sql-server als auch auf mySQL funktionieren.

SELECT a.primaryCustomerID, a.PositionCode 
from table a 
where a.positionCode = 'WSO' 
and not exists (select 1 from table b where b.primaryCustomerID = a.primaryCustomerID and b.positionCode = 'PB') 
0

primaryCustomerID - PositionCode 1 PB 1 WSO 2 WSO 3 PB 4 PB 4 WSO

Unter der Annahme dieser Tisch ist und Sie erwarten, dass die Abfrage Primary CustomerID zurückzukehren - 2

Hier ist eine Beispielabfrage in mysql (unter der Annahme, dass der Tabellenname xyz ist), nicht eine optimierte Abfrage, sondern liefert das Ergebnis 2,

select * from xyz wo positionCode = 'WSO' und PrimaryCustomerID nicht in (wählen PrimaryCustomerID von xyz wo positionCode = 'PB')