行转列这个问题感觉经常会出现,但我一直没有 get 到,这次借着群里的小伙伴再次提到,解锁这一成就 😂
样本如下:
目标结果如下:
代码如下:
select username,
sum(case when bookname='X' then price end) as 'X',
sum(case when bookname='Y' then price end) as 'Y',
sum(case when bookname='Z' then price end) as 'Z'
from test
group by username
说明
可以看到,关键在于 case when 和聚合
通过多个 case when,来讲 bookname 列重复成多列,满足条件才显示,否则就是 null:
然后根据 username 进行聚合,将 null 的部分合并,就可以得到预期结果
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于