我是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也会有所帮助。