如何使用'select'来完成这项工作

时间:2012-03-30 02:26:54

标签: sql sqlite select

我在sqlite数据库中有一个表,如下所示。


    id    status

    =============
    x     0
    y     1
    y     0
    x     1
    x     1 
    z     0

作为示例,我有3个不同的id状态(0/1),x在表中找到3次,status = 0 1次,status = 1 2次,y找到2次在表中,状态= 0表示1次,状态= 1表示1次。

所以,我想使用'select'来获得以下结果,有没有办法做这个工作?任何帮助,将不胜感激。感谢


    id     sum(status=0)     sum(status=1)   total(status)
    ========================================================
    x      1                  2              3
    y      1                  1              2
    z      1                  0              1

2 个答案:

答案 0 :(得分:3)

我相信这应该有效:

SELECT id, 
    SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS SUM_STATUS_0, 
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS SUM_STATUS_1,
    SUM(status) AS SUM_STATUS
FROM TABLE
GROUP BY id

答案 1 :(得分:0)

这也应该有效,因为count不计算空值:

select id,
  count(case when status = 0 then 1 end) Status0,
  count(case when status = 1 then 1 end) Status1,
  count(*) StatusAll
from t
group by id