【发布时间】:2016-05-06 10:57:36
【问题描述】:
我已经搜索过这个问题并发现了这个问题,而适用于大多数人的解决方案(使用外连接)对我不起作用。我最初有一个内部联接,并将其切换到外部联接,但我得到了相同的结果。这是基于某些帐号的,它显示了它们的总销售额。如果一个帐户的销售额为 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 连接会发生什么?
-
我试过了,结果是一样的:(
-
好的,所以请参阅下面的答案 - 主要问题是您在
in子句以及您的选择中使用了 sales.accountnumber。从另一张桌子上拿走