SQL Pivot 的花式操作

  • 2019 年 12 月 25 日
  • 筆記

有趣

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

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

思路

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

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

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

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

总结

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