首先我们先看下面这个表 pritice:
select * from pritice
good num house
1 7 sc1
3 2 sc1
2 4 sc1
1 2 sc3
4 50 sc2
4 7 sc1
4 6 sc3
5 6 sc2
进行(xing) 行(hang)转列操作(1):
select good
,sum(case house when 'sc1' then num else 0 end) as 'sc1'
,sum(case house when 'sc2' then num else 0 end) as 'sc2'
,sum(case house when 'sc3' then num else 0 end) as 'sc3'
from pritice group by good
分析:上面的语句首先选出 good 商品编码,然后选出各个仓库的各个商品的总数量,类似sc1仓库的1号商品数量的和这种东西,
case 判断当前仓库,then取出当前仓库数量,由于group by good 所以取出的是每个商品的数量,因为有sum函数存在,所以如果不存在num的值要赋为 0,这里选出的就是sc1仓库的各种商品数量。
进行(xing) 行(hang)转列操作(2):
select * from table_name pivot(聚合函数 for Column in(Column)) as 别名
select * from pritice pivot(max(num) for house in (sc1,sc2,sc3))u --这里的别名一定要有