我正在寻找一个解决方案,成为一个漂亮的表,看起来像这样:
ID | A | B | C
-------------------------------
1 | 15 | 4 | 3
2 | 3 | 7 | 1
来源是这样的:
ID | Type
--------------
1 | A
2 | A
1 | C
1 | C
2 | C
1 | B
2 | A
1 | B
现在我要计算每个ID的所有A-Type和所有B-Type。
有简单的方法吗?
由于
答案 0 :(得分:6)
这种类型的数据转换称为数据转换。 MySQL没有pivot函数,但你可以使用带有CASE表达式的聚合函数来获得结果:
select id,
count(case when type = 'A' then 1 end) A,
count(case when type = 'B' then 1 end) B,
count(case when type = 'C' then 1 end) C
from yourtable
group by id;
答案 1 :(得分:1)
假设您的表名为sometable ...
select ID,
sum(if(Type="A",1,0)) as A,
sum(if(Type="B",1,0)) as B,
sum(if(Type="C",1,0)) as C
from someTable
group by ID
应该做的伎俩。