SQL case 多条件问题

查看:306
本文介绍了SQL case 多条件问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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,

select 
    case when then else end,
    case when then else end 
 from table;

这样子就可以了


不过这样你后面的group by就不能这么玩了

这篇关于SQL case 多条件问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆