我有下面的代码,它带来了一天“GRLastDt”完成或未完成的总和,但我没有考虑重复的返回ID。有没有办法每天为每个返回ID返还一笔金额?
例如,当天24/5/15可能有5行到当天有'X'完成然而2行有重复的返回ID'RtnId'因此总和将是4而不是5 24/5 / 15。
SELECT
CONVERT(varchar(15), GRLastDt, 111) AS Date_,
SUM(CASE WHEN Complete = 'X' THEN 1 ELSE 0 END) AS Complete,
SUM(CASE WHEN Complete <> 'X' /*and RtnDt <>GRLastDt*/THEN 1 ELSE 0 END) AS Due
FROM [dbo].[vw_AN_Admin_VendorReturns]
WHERE (GRLastDt >= GETDATE() - 30)
GROUP BY CONVERT(varchar(15), GRLastDt, 111),GRLastDt
答案 0 :(得分:2)
如果我理解你的问题,我认为你可以改变这一行:
SUM(CASE WHEN Complete = 'X' THEN 1 ELSE 0 END) AS Complete,
到此:
COUNT(DISTINCT CASE WHEN Complete = 'X' THEN RtnId END) AS Complete,
您可能希望对到期计算进行相同的更改。