gpt4 book ai didi

sql - 即使没有可显示的记录也显示 0

转载 作者:行者123 更新时间:2023-12-04 19:24:56 26 4
gpt4 key购买 nike

我有一个似乎无法完善的查询。任何帮助将不胜感激。使用 SQL Server 2008 R2。

我试图在结果中显示所有社区,即使该社区没有记录也是如此。

SELECT COALESCE(SUM(D.FulfillmentAmt),0) as Approved, DB.Budget, DC.CommunityName 
FROM Donations D
LEFT JOIN DCommunity DC ON D.Market = DC.CID
LEFT JOIN DBudget DB ON D.Market = DB.Community
WHERE D.StatusId = '1' AND DB.[Year] = year(getdate())
GROUP BY DC.CommunityName, DB.Budget
ORDER BY DC.CommunityName

目前显示以下结果:

Approved | Budget | CommunityName
10 | 2000 | City1
2400 | 3000 | City2
2358 | 5000 | City3
1855 | 2000 | City5
2200 | 3000 | City6
5600 | 7000 | City8

如您所见,它缺少 City4 和 City7,因为 dbo.Donations 表中没有这些城市的记录。即使他们没有记录,我仍然希望这两个显示的批准金额为 0。

最佳答案

由于您需要所有社区,因此从风格上来说,我总是将其作为我在连接中的第一张表(便于我思考)。然后,您需要将 WHERE 条件适本地移动到 JOIN 子句中,因为将它们保留在 WHERE 中会强制其表现得​​像 INNER JOIN。此外,DBudget 上的连接需要更新以引用回 DCommunity 表。

SELECT COALESCE(SUM(D.FulfillmentAmt),0) as Approved, DB.Budget, DC.CommunityName 
FROM DCommunity DC
LEFT JOIN DBudget DB ON DC.CID = DB.Community AND DB.[Year] = year(getdate())
LEFT JOIN Donations D ON D.Market = DC.CID AND D.StatusId = '1'
GROUP BY DC.CommunityName, DB.Budget
ORDER BY DC.CommunityName

关于sql - 即使没有可显示的记录也显示 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com