我有一个充满调查数据的表格,我需要将其转换为一个很好的汇总表格。调查问题是(例如)“按顺序排列您的餐厅偏好”。原始数据如下所示:
CUST_ID WENDYS_RANK MCDONALDS_RANK BURGERKING_RANK
1 First Third Second
2 Second First Third
3 None First Second
4 Second Third First
(repeat for 100,000+ records)
我需要把它变成一个好看的表,看起来像:
NAME NUM_FIRST NUM_SECOND NUM_THIRD
Wendys 1 2 0
McDonalds 2 0 2
BK 1 2 1
但是我做了这样的转换已经很久了我不仅忘记了如何编写SQL,我忘记了这个转换被称为什么,这让谷歌变得很难。谁能帮我?
...谢谢
答案 0 :(得分:1)
这是一种方法:
select 'Wendys',
sum(case when Wendys_Rank = 'First' then 1 else 0 end) as Rank1,
sum(case when Wendys_Rank = 'Second' then 1 else 0 end) as Rank2,
sum(case when Wendys_Rank = 'Third' then 1 else 0 end) as Rank3
from surveydata
union all
select 'McDonalds',
sum(case when McDonalds_Rank = 'First' then 1 else 0 end) as Rank1,
sum(case when McDonalds_Rank = 'Second' then 1 else 0 end) as Rank2,
sum(case when McDonalds_Rank = 'Third' then 1 else 0 end) as Rank3
from surveydata
union all
select 'BK',
sum(case when BK_Rank = 'First' then 1 else 0 end) as Rank1,
sum(case when BK_Rank = 'Second' then 1 else 0 end) as Rank2,
sum(case when BK_Rank = 'Third' then 1 else 0 end) as Rank3
from surveydata;