按状态和日计算所有行

时间:2016-05-26 14:03:02

标签: sql postgresql postgresql-9.1 postgresql-9.2 postgresql-9.4

我想使用此表在PostgreSQL中存储票证。

CREATE TABLE TICKET(
 ID INTEGER NOT NULL,
 TITLE TEXT,
 STATUS INTEGER,
 LAST_UPDATED DATE,
 CREATED DATE
)
;

我使用列'status'来设置不同的状态(1,2,3,4)。如何通过一个SQL查询按状态和日期计算所有票证?

我想得到最终结果,例如简单的数字数组:

32 31 23 42 9.11.215
31 21 13 22 10.11.215
3 3 2 43 11.11.215

1 个答案:

答案 0 :(得分:1)

您可以使用条件聚合来执行此操作,这会将单独的行合并为1个聚合行:

SELECT t.created,
       COUNT(CASE WHEN t.status = '1' THEN 1 END) as cnt_status1,
       COUNT(CASE WHEN t.status = '2' THEN 1 END) as cnt_status2,
       COUNT(CASE WHEN t.status = '3' THEN 1 END) as cnt_status3,
       COUNT(CASE WHEN t.status = '4' THEN 1 END) as cnt_status4
FROM ticket t
GROUP BY t.created