希望从表中拾取属于符合指定条件的客户端的所有记录



我是一个相当基本的SQL Server Management Studio用户,我知道我通常需要什么,但这对我来说是新的。

我有一个当前摘录,它从ci_periodicBillings表中挑选出所有行,其中给定时间段内的速率为"165.56"或"-165.56"。这很好,正在运行,但我现在有一个额外的要求,即无论费率如何,只要客户至少有一个费率为"165.56"或"-165.56",都要显示ci_periodicBillings的所有条目。所以客户端A有5行不同的速率,但1是"165.56"-我需要显示所有5行客户端B有7行,具有不同的速率,并且0满足条件-我不需要它们中的任何一个。

我已经有了下面的代码来挑选"156.56"或"-156.56"值,但我需要添加显示属于每个客户端的所有行的新要求。

谢谢你的帮助。

SELECT f.NAME                     AS Home, 
c.forename, 
c.surname, 
c.resid, 
Cast(c.admission AS DATE)  AS ADMISSION, 
Cast(c.leavedate AS DATE)  AS LEAVE, 
fm.fundingname, 
p.description              AS ServiceType, 
Cast(pb.billstart AS DATE) AS BILLSTART, 
Cast(pb.endbill AS DATE)   AS ENDBILL, 
a.accountcode, 
a.accountname 
FROM   cs_facilities f 
LEFT JOIN cs_clients c 
ON f.guid = c.facility 
LEFT JOIN ci_periodicbillings pb 
ON c.guid = pb.client 
LEFT JOIN cs_fundingmethods fm 
ON pb.restype = fm.fundingid 
LEFT JOIN ci_products p 
ON pb.product = p.guid 
LEFT JOIN cs_accounts a 
ON pb.accountguid = a.account 
WHERE  ( ( billstart BETWEEN '2019-04-01' AND '2020-03-31' ) 
OR ( endbill BETWEEN '2019-04-01' AND '2020-03-31' ) 
OR ( billstart <= '2019-04-01' 
AND endbill >= '2020-03-31' ) ) 
AND ( pb.rate = '165.56' 
OR pb.rate = '-165.56' ) 
ORDER  BY f.NAME, 
c.surname ASC, 
c.forename ASC 

删除查询中的pb.rate…部分,并在where子句之前添加以下内容

Inner JOIN ( Select * from ci_periodicbillings where pb.rate in('165.56','-165.56')  )  restrictedClients 
ON c.guid = restrictedClients.client 

这将只包括账单中费率为"165.56"或"-165.56"的客户。

最新更新