我想使用此表在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
答案 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