SELECT
COUNT(id),
CASE
WHEN datetime > '2017-08-22 17:03:00' THEN 1
WHEN datetime > '2017-08-20 17:03:00' THEN 3
WHEN datetime > '2017-08-16 17:03:00' THEN 7
WHEN datetime > '2017-08-30 17:03:00' THEN 30
ELSE 0 END AS date
FROM
source
GROUP BY
date
ORDER BY datetime
case函数只返回第一个符合条件的值,剩下的case部分将会被忽略
但是我希望查询结果包括所有case条件为true的计数,这样的sql怎么写,求问
比如说20号的记录在这段SQL里面遇到第二个case为true后就执行退出了,但我希望在3,7,30这三个case中都执行一遍,也就是说20号的数据在3,7,10这三个结果列中都会进一遍计数
一个case when不可能的,照你这么干岂不是把一条记录变成了好几条记录?无中生有啊你这是!
一条记录判断多次生成多个结果你就需要扫描多次才行,这时候你就需要多次case when,
是
这样子就可以了
不过这样你后面的group by就不能这么玩了