sql server之pivot函数

PIVOT用于将列值旋转为列名(即行转列)   
       今天整理以前的笔记时,发现以前在PPD实习的时候遇到一个场景,感觉很实用所以想记录一下,说不定以后能用到,话不多说,直接上案例:
--表table1
问题编号  时间节点 listing_size  TotalAmount
 1.1      2014      0-1k        623.900
 1.1      2014      10k-50k      62390 
 1.1      2014      1k-5k       3239.00
 1.1      2014       50k+        623900
 1.1      2014      10k-50k       12500
 1.1      2014      5k-10k        6239 
 1.1      2014      5k-10k        8546
 1.1      2014      5k-10k        6548

现在想将其转换为如下场景:

 问题编号 时间节点  [0-1k],[1k-5k],[5k-10k],[10k-50k],[50k+]
  1.1    2014    623.9   ***     ***      ***       ***

代码实现如下:

 select 问题编号,时间节点,[0-1k],[1k-5k],[5k-10k],[10k-50k],[50k+]
  from table1
  PIVOT
   (
     SUM (TotalAmount) for listing_size in [0-1k],[1k-5k],[5k-10k],[10k-50k],[50k+])
   )tbl

由于现在主要用hive导致很少用sql server了,所以没有运行环境了,但是这个案例绝对可以运行成功~


猜你喜欢

转载自blog.csdn.net/weixin_37536446/article/details/80679938