好的情况是......
在数据库中有一个ID为684的客户端。
对于这个特定的客户,有发票。
其中一些发票附有多个作业。
我需要多次列出发票上的所有工作以及这些工作。
我是SQL的新手,想了解它是如何完成的。
到目前为止我的代码
SELECT
i.InvoiceNo
FROM
Job j
INNER JOIN Client c ON j.ClientID = c.ClientID
INNER JOIN Invoice i ON c.ClientID = i.ClientID
INNER JOIN InvoiceItem ii ON i.InvoiceID = ii.InvoiceID
WHERE
c.ClientID = 684
AND
(SELECT COUNT(DISTINCT JobNo) FROM InvoiceItem) > 1
你需要知道的任何问题,我会尽力帮助。
我基本上不知道如何在我的主要选择中猜测从子选择中显示我的结果。
答案 0 :(得分:0)
首先,使用HAVING过滤数据
SELECT
COUNT(ii.JobNo), ii.JobNo
FROM
Job AS j
INNER JOIN Client AS c ON j.ClientID = c.ClientID
INNER JOIN Invoice AS i ON c.ClientID = i.ClientID
INNER JOIN InvoiceItem AS ii ON i.InvoiceID = ii.InvoiceID
WHERE
c.ClientID = 684
GROUP BY JobNo
HAVING COUNT(DISTINCT ii.JobNo) > 1