SQLite3:如果SUM()中不存在记录,则返回NULL

时间:2014-05-04 23:09:27

标签: sql sqlite

我希望SUM()同时使用WHERE但是当找不到某个ID的记录时,我希望它返回NULL而不是仅仅SELECT ID, SUM(CASE WHEN EVENTS = 3 THEN 1 ELSE 0 END) FROM Events_ID WHERE YEAR = 2012 GROUP BY ID 不归还任何东西。

初始代码:

ID

如果2012年没有事件,则不会返回SELECT ID, (SELECT SUM(CASE WHEN EVENTS = 3 THEN 1 ELSE 0 END) FROM EVENTS_ID r WHERE r.ID = t.ID AND r.YEAR = 2012) FROM (SELECT * FROM Events_ID GROUP BY ID) as t;

然后我将其更改为以下似乎可以正常工作,但速度大约慢了100倍!

{{1}}

有没有让第二个查询的输出更接近第一个查询的速度?

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

SELECT ID,
       SUM(CASE WHEN EVENTS = 3 AND YEAR = 2012 THEN 1 END)
FROM Events_ID
GROUP BY ID;

如果没有任何事件符合这两个条件,这将返回所有ID,NULL作为第二个值。