我正在开展一个至少对我来说有点有趣的项目......现在我有了这段代码。虽然这是有效的,但我想提出的是2016年全年和2017年的季度爆发。
SELECT account_id,
quarter, revenue,
sum(case when quarter like '%2016' then revenue else 0 end) as rev2016
FROM prescreen
GROUP BY quarter
ORDER BY rev2016 desc ;
我所看到的是
account_id . quarter . revenue . rev2016
1 Q4-2016 . 600 . 600
1 Q1-2016 500 . 500
1 Q2-2016 400 400
1 Q3-2016 350 . 350
1 Q1-2017 1000 . 0
1 Q2-2017 . 650 . 0
1 Q3-2017 890 . 0
我希望看到的预期输出更像是
account_id . rev2016 . Q1-2017 . Q2-2017 . Q3-2017
1 . 1850 . 1000 . 650 . 890
我还可以尝试获得一行结果吗?
答案 0 :(得分:1)
在MySQL中,您通常通过执行条件聚合来实现:
SELECT account_id,
(case when quarter like '2016%' then revenue else 0 end) as rev_2016,
(case when quarter like 'Q1-2017' then revenue else 0 end) as rev_2017Q1,
. . .
FROM prescreen
GROUP BY account_id;