gpt4 book ai didi

mysql - 返回销售额的查询不包括为 0 的结果

转载 作者:行者123 更新时间:2023-11-29 01:37:48 25 4
gpt4 key购买 nike

我搜索了这个并发现了这个问题,并且适用于大多数人的解决方案(使用外部联接)对我不起作用。我最初有一个内部连接,并将其切换为外部连接,但我得到了相同的结果。这是基于某些帐号,它显示了他们的总销售额。如果一个帐户的销售额为 0,则它不会显示,而我需要它显示。这是我的查询。

Select a.accountnumber, SUM(a.totalsales) as Amount, c.companyname
FROM Sales a LEFT OUTER JOIN Accounts c on (a.Accountnumber = c.Accountnumber)
WHERE a.Salesdate between '1/1/2016' and '1/27/2016'
AND a.Accountnumber in ('1','2','3','4')
GROUP BY a.Accountnumber, c.companyname

我会得到如下结果:

Accountnumber | Amount  | Company
1 | 250.00 | A
3 | 500.00 | B

由于帐号 2 和 4 没有金额,因此不会显示。我希望他们像这样出现

Accountnumber | Amount  | Company
1 | 250.00 | A
2 | 0 | B
3 | 250.00 | C
4 | 0 | D

我怎样才能做到这一点?任何帮助,将不胜感激。谢谢!

最佳答案

我认为 RIGHT JOIN 不会起作用,因为 WHERE 中有条件。试试这个:

SELECT
c.accountnumber,
COALESCE(SUM(a.totalsales),0) AS Amount,
c.companyname
FROM Accounts c
LEFT OUTER JOIN Sales a
ON a.Accountnumber = c.Accountnumber
AND a.Salesdate BETWEEN '1/1/2016' AND '1/27/2016'
WHERE
c.Accountnumber IN ('1', '2', '3', '4')

GROUP BY c.Accountnumber, c.companyname

只是为了澄清,问题不在于使用了哪个 JOIN,它可以是任何一个,而是在不存在的(NULL)值上使用 WHERE 条件,因为来自外部连接表的所有不匹配值无论如何都是 NULL,应用任何条件,实际上使这些连接成为内部连接(除非它们是 IS NULL 条件),请参阅:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

关于mysql - 返回销售额的查询不包括为 0 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072127/

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