所以,想出一个标题很难
SELECT Date(p.born_at), SUM(p.value) as 'total_value_for_day'
FROM puppies as p
WHERE p.status = 2
GROUP BY DATE(p.born_at);
因此,这给出了2列结果。
我想要的是:
列:
date | status = 1 | status = 2 | status = 3
DATA!!!
有办法吗?
答案 0 :(得分:1)
SELECT Date(born_at),
SUM(case when Status = 1 then value else 0 end) as 'status = 1',
SUM(case when Status = 2 then value else 0 end) as 'status = 2',
SUM(case when Status = 3 then value else 0 end) as 'status = 3'
FROM puppies
GROUP BY DATE(born_at);
答案 1 :(得分:1)
SELECT Date(p.born_at),
SUM(case when status = 1 then p.value end) as 'status = 1',
SUM(case when status = 2 then p.value end) as 'status = 2',
SUM(case when status = 3 then p.value end) as 'status = 3'
FROM puppies as p
WHERE p.status in(1,2,3)
GROUP BY DATE(p.born_at);
答案 2 :(得分:1)
SELECT
DATE(p.born_at)
, SUM(CASE WHEN STATUS = 1 THEN p.value END) AS 'Status = 1'
, SUM(CASE WHEN STATUS = 2 THEN p.value END) AS 'Status = 2'
, SUM(CASE WHEN STATUS = 3 THEN p.value END) AS 'Status = 3'
FROM puppies AS p
WHERE p.status IN(1, 2, 3)
GROUP BY DATE(p.born_at);