我已经到处搜索,无法找到解决方案(如果有的话)。另外,我可能会看到这个错误(我是SQL的新手)。
我正在尝试获取显示取消日期的总销售额。这段代码工作得很好。我的问题是:有没有办法让所有行(即空行)显示为0总销售额?我看这个完全错了吗?有人可以帮助我朝着正确的方向前进吗?
SELECT "Div Code", "Agent Name", SUM("Gross Sale")
FROM salessummary
WHERE "Cancel Date" IS NOT NULL
GROUP BY "Div Code", "Agent Name";
此数据输出为12行,显示:
Div Code | Agent Name | Gross Sale
SC John Smith $120
NC Jane Smith $130
NC Will Smith $40
我希望它显示所有30行(即使代理没有取消):
Div Code | Agent Name | Gross Sale
SC John Smith $120
*SC Jada Smith $0*
NC Jane Smith $130
NC Will Smith $40
问题是我的总销售额是否取决于是否有取消日期。这就是定义我的数据的原因。
答案 0 :(得分:2)
如果问题是nav.main-menu li
可能有Gross Sale
个值,我建议:
NULL
SELECT "Div Code", "Agent Name", COALESCE(SUM("Gross Sale"), 0) as "Gross Sale"
FROM salessummary
WHERE "Cancel Date" IS NOT NULL
GROUP BY "Div Code", "Agent Name";
是ANSI标准函数,用指定值替换COALESCE()
值。在NULL
之后执行此操作意味着仅调用一次 - 微优化,但SUM()
中会忽略NULL
值。
如果你想要所有“div代码”/“代理名称”组合 - 甚至那些没有取消的组合 - 使用条件聚合:
SUM()
答案 1 :(得分:0)
你可以尝试:
SUM(ISNULL("Gross Sale",0))