SQL Pivot 的花式操作

有趣 

 

今天我们的【有关SQL微信群】提了个高质量的问题。

 

640?wx_fmt=png

提问的同学很讲究,能用图描述明白问题,看了就有回答的冲动。

 

思路

 

这是经典的行列转行问题。有些读者刚看了图就跳出了文章,实在可惜。经典的行列转换问题,解决的是围绕轴做旋转,这根轴通常明文标识,一眼尽显。但这里不明显。

 

所以解决这问题的本质,就是找到那根轴,如果没有就创造一根。

 

640?wx_fmt=png

 

[ Seq ] 就是创造的那根轴, 由 Row_Number 函数自动生成,目的作为一根中心轴,带动其他列的转动,且维持了次序。这是核心代码思路,如果需要转的字段有很多,那么需要写函数或者拼接动态 SQL 了,可以自由发挥。

 

当然,解决此题的最优雅方案肯定不止这一种,有兴趣可留言讨论。

 

总结  

在之前的文章中,对于 SQL 行列转换场景我归结了一句诗:

 

是列

列即是行

看行不是行

看列不是列

 

今天加个横批:无中生有

 

 

无中生有

 

 

是列

列即是行

看行不是行

看列不是列

 

 

 

 


 

猜你喜欢:

 

本号精华合集

6 图助你理解 SQL 优化策略

9 张脑图梳理下分布式数据计算系统【附高福利】

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值