ich eine Tabelle von SalesDetails haben, wie folgt aussehen:Intersect Select-Anweisungen für bestimmte Spalten
InvoiceID, LineID, Product
1,1,Apple
1,2,Banana
2,1,Apple
2,2,Mango
3,1,Apple
3,2,Banana
3,3,Mango
Meine Forderung ist Zeilen zurückgeben, wo eine Rechnung einen Umsatz von beiden enthalten: Apfel und Banane, aber wenn es andere Produkte auf einer solchen Rechnung, ich will diese nicht.
So sollte das Ergebnis sein:
1,1,Apple
1,2,Banana
3,1,Apple
3,2,Banana
Ich habe versucht, die folgenden:
Select * from SalesDetails where Product = 'Apple'
Intersect
Select * from SalesDetails where Product = 'Banana'
nicht funktioniert, weil es scheint, Intersect alle Spalten übereinstimmen muss.
Was ich hoffe, zu tun ist:
Select * from SalesDetails where Product = 'Apple'
Intersect ----On InvoiceID-----
Select * from SalesDetails where Product = 'Banana'
Gibt es eine Möglichkeit, dies zu tun?
Oder muss ich zunächst auf InvoiceIDs Intersect nur meine Kriterien verwenden, wählen Sie dann die Reihen jener InvoiceIDs in denen die Kriterien wieder angepasst, das heißt:
Select * From SalesDetails
Where Product In ('Apple', 'Banana') And InvoiceID In
(
Select InvoiceID from SalesDetails where Product = 'Apple'
Intersect
Select InvoiceID from SalesDetails where Product = 'Banana'
)
die etwas verschwenderisch scheint, da sie die Kriterien der Prüfung ist zweimal.
Welche ver sql-server benutzen sie? – Arion
Machen Sie ein Self Join! – jarlh
SQL Server 2014, Developer Edition – Xinneh