Я таблицу SalesDetails, глядя, как это:Intersect Выберите отчеты об отдельных столбцах
InvoiceID, LineID, Product
1,1,Apple
1,2,Banana
2,1,Apple
2,2,Mango
3,1,Apple
3,2,Banana
3,3,Mango
Мое требование вернуть строки, где Счет содержал продажи как: Apple и банан, но если есть другие продукты на такой счет-фактуре, я не хочу их.
Так что результат должен быть:
1,1,Apple
1,2,Banana
3,1,Apple
3,2,Banana
Я попытался следующие:
Select * from SalesDetails where Product = 'Apple'
Intersect
Select * from SalesDetails where Product = 'Banana'
Не работает, потому что кажется, Intersect должен соответствовать все столбцы.
То, что я надеюсь сделать это:
Select * from SalesDetails where Product = 'Apple'
Intersect ----On InvoiceID-----
Select * from SalesDetails where Product = 'Banana'
Есть ли способ сделать это?
Или я должен первым Intersect на InvoiceIDs только используя мои критерии, а затем выберите строки тех InvoiceIDs где критерии совпавших снова, Ie:
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'
)
Который кажется несколько расточительно, как это рассматривает критерии дважды.
Какие версии sion sql-server вы используете? – Arion
Присоединяйтесь! – jarlh
SQL Server 2014, Developer Edition – Xinneh