SQL my ISNULL(SUM(FOOBAR),0)查询不起作用



我是SQL的新手,创建了我的前三个查询

第一个没有ISNULL的列提供了一个结果,但有几个列的总和值为NULL。

然后,我为第一列添加了ISNULL,它起作用了,所以我将它添加到其他列,并收到以下错误消息:

SQL Fehler[1]:[SQLITE_ERROR]SQL错误或缺少数据库(靠近"ISNULL":语法错误(

我删除了额外的ISNULL,甚至只有一个ISNULL的命令也不起作用了。

我找不到错误。我的请求如下:

SELECT 
TABLE1.WORK, PARTNER_ID, ISNULL(SUM(VIEWS),0), ISNULL(SUM(APPLICATION_VIEWS),0), ISNULL(SUM(APPLICATIONS),0)
FROM 
TABLE1
LEFT JOIN TABLE2
ON TABLE2.WORK= TABLE1.WORK
LEFT JOIN TABLE3
ON TABLE2.CATEGORY_ID = TABLE3.ID
LEFT JOIN TABLE4
ON TABLE1.SOURCE_ID = TABLE4.ID
LEFT JOIN TABLE5
ON TABLE1.WORK = TABLE5.WORK
WHERE (TABLE3.Category='Foo'
OR TABLE3.Category='Bar')
AND TABLE4.NAME='phone' 
GROUP BY
TABLE1.WORK

尝试COALESCE()。这是用另一个值替换NULL值的标准SQL函数:

SELECT TABLE1.WORK, PARTNER_ID,
COALESCE(SUM(VIEWS), 0), 
COALESCE(SUM(APPLICATION_VIEWS), 0), 
COALESCE(SUM(APPLICATIONS), 0)

您还可以将WHERE子句简化为:

WHERE (TABLE3.Category IN ('Foo', Bar') AND
TABLE4.NAME = 'phone' 

最后,在对代码进行更改以使其运行之后,我认为它无法正确计算总和。我怀疑你在不同的维度上连接,得到一个笛卡尔乘积。

如果是这种情况,请提出一个新的问题,其中包含示例数据、所需结果以及对要实现的逻辑的解释。某种类型的db/sql fiddle也会有所帮助。

最新更新