目标是检索用户的逾期金额摘要。 group by子句似乎是问题所在,因为SUM函数调用需要它。 我知道可以通过子查询来实现,但出于性能原因,我想避免这种情况。
SELECT u.Name AS 'UserName'
SUM(i.Amount) AS 'PastDue'
FROM [User] u
LEFT JOIN [Invoice] i
ON i.UserId = u.Id
WHERE i.DueDate > GETDATE()
AND i.Paid = 0
GROUP BY ???
表[用户]
Id Name
1 John
2 Mike
3 Brian
4 Todd
5 Asyan
表[发票]
Id UserId Amount DueDate Paid
1 1 100 1/1/2019 0
2 1 100 1/2/2019 0
3 5 200 1/1/2019 1
4 5 200 1/2/2019 1
5 5 200 1/3/2019 0
预期结果
UserName PastDue
John 200
Asyan 200
答案 0 :(得分:1)
此查询检查“大于=IF(COUNTIFS(C1:C2,"Yes")=0,"N/A",
CONCAT(IF(C1="Yes","Description 1,",""), IF(C2="Yes","Description 2,",""))
)
”。您可能的意思是GETDATE()
比duedate
小。
以下查询将为您提供预期的结果:
getdate()