我有一个invoice_detail表,用于存储所有发票信息。显然,详细信息表存储了每个订单项,以便像这样打开发票:
Ticket_Detail_ID Ticket_Number Customer_ID Service_Code Total
1 1 15 Book1 4.00
2 1 15 Book2 5.00
3 1 15 Book3 6.00
4 2 16 Book1 4.00
5 2 16 Book2 5.00
6 3 17 Book1 4.00
7 3 17 Book2 5.00
8 3 17 Book3 6.00
我想根据Ticket_number选择一个不同的票数,这些票据没有" Book3"服务代码。所以在这个例子中,我会指望:
Ticket 16
,因为它没有" Book3"
它将返回:
1
我现在的查询是:
Select Count (Distinct Ticket_Number) as Total
From Invoice_Details
Where Service_Code <> 'Book3'
返回:
6
答案 0 :(得分:2)
使用NOT EXISTS
:
SELECT COUNT(DISTINCT Ticket_Number)
FROM dbo.YourTable T
WHERE NOT EXISTS(SELECT 1 FROM dbo.YourTable
WHERE Service_Code = 'Book3'
AND Ticket_Number = T.Ticket_Number)
Here is an sqlfiddle及其演示。