sql面试题:行转列

Posted 25miao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql面试题:行转列相关的知识,希望对你有一定的参考价值。

CREATE TABLE ProgrectDetail
(
    ProgrectName         NVARCHAR(20), --工程名称
    OverseaSupply        INT,          --海外供应商供给数量
    NativeSupply         INT,          --国内供应商供给数量
    SouthSupply          INT,          --南方供应商供给数量
    NorthSupply          INT           --北方供应商供给数量
)

INSERT INTO ProgrectDetail
SELECT A, 100, 200, 50, 50
UNION ALL
SELECT B, 200, 300, 150, 150
UNION ALL
SELECT C, 159, 400, 20, 320
UNION ALL
SELECT D, 250, 30, 15, 15

技术图片

 

 行转列后:

SELECT P.ProgrectName,P.Supplier,P.SupplyNum
FROM 
(
    SELECT ProgrectName, OverseaSupply, NativeSupply,
           SouthSupply, NorthSupply
     FROM ProgrectDetail
)T
UNPIVOT 
(
    SupplyNum FOR Supplier IN
    (OverseaSupply, NativeSupply, SouthSupply, NorthSupply )
) P

 

技术图片

 

以上是关于sql面试题:行转列的主要内容,如果未能解决你的问题,请参考以下文章

Hive面试题系列第二题-行转列问题

Hive面试题系列第二题-行转列问题

Hive面试题系列第二题-行转列问题

sql面试:sql中的行转列和列转行

SQL Server 动态行转列(参数化表名分组列行转列字段字段值)

通过sql实现动态行转列