SQL列转行

18 篇文章 0 订阅

在这里插入图片描述

行转列

SELECT ProgrectName, 'OverseaSupply' AS Supplier, 
        MAX(OverseaSupply) AS 'SupplyNum'  -- 可以写max,也可以写mean,min,因为都是一样的
FROM ProgrectDetail 
GROUP BY ProgrectName 

UNION ALL 

SELECT ProgrectName, 'NativeSupply' AS Supplier, 
        MAX(NativeSupply) AS 'SupplyNum' 
FROM ProgrectDetail 
GROUP BY ProgrectName 

UNION ALL 

SELECT ProgrectName, 'SouthSupply' AS Supplier, 
        MAX(SouthSupply) AS 'SupplyNum' 
FROM ProgrectDetail 
GROUP BY ProgrectName 

UNION ALL 

SELECT ProgrectName, 'NorthSupply' AS Supplier, 
        MAX(NorthSupply) AS 'SupplyNum' 
FROM ProgrectDetail 
GROUP BY ProgrectName

在这里插入图片描述

用UNPIVOT 实现如下:

SELECT ProgrectName,Supplier,SupplyNum 
FROM  
( 
    SELECT ProgrectName, OverseaSupply, NativeSupply, 
           SouthSupply, NorthSupply 
     FROM ProgrectDetail 
)T 
UNPIVOT  
( 
    SupplyNum FOR Supplier IN 
    (OverseaSupply, NativeSupply, SouthSupply, NorthSupply ) 
) P
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值