我的品牌表中有任意数量的重复项,尺寸表中的选项数量有限:
Item Brand Size
1 BiGNRG AA
2 LongLife AAA
3 LongLife AAA
4 BiGNRG AA
5 LongLife D
6 EcoBatt C
7 BiGNRG AAA
8 BiGNRG AA
9 EcoBatt C
我需要一个SQL查询将该信息转换为此:
Brand AA AAA C D
BiGNRG 3 1 0 0
EcoBatt 0 0 2 0
LongLife 0 2 0 1
我不知道如何将这些数据转换为这种格式。
最佳答案
如果选项的数量有限,则可以尝试通过取消选择union all来使用组
select brand, count(AA) AA, count(AAA) AAA, count(C) C, count(D) D
from (
select Brand, 'AA' AA , NULL AAA, NULL C , NULL D
from my_table
where size ='AA'
union ALL
select Brand, null , 'AAA' , NULL , NULL
from my_table
where size ='AAA'
union ALL
select Brand, null , null , 'C' , NULL
from my_table
where size ='C'
union ALL
select Brand, null , null , null, 'D'
from my_table
where size ='D'
) T
group by brand
关于mysql - 在MySQL中,如何计算一列中某个值范围的出现次数,而不是另一列中所有唯一值的出现次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54241471/