码迷,mamicode.com
首页 > 数据库 > 详细

SQL中行转列(PIVOT)与列转行(UNPIVOT)

时间:2018-10-30 13:09:54      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ogr   arc   select   nat   core   union   tab   pivot   英语   

一、行转列

1、测试数据准备

CREATE  TABLE [StudentScores]
(
   [UserName]         NVARCHAR(20),        --学生姓名
   [Subject]          NVARCHAR(30),        --科目
   [Score]            FLOAT,               --成绩
)

INSERT INTO [StudentScores] SELECT 张三, 语文, 80
INSERT INTO [StudentScores] SELECT 张三, 数学, 90
INSERT INTO [StudentScores] SELECT 张三, 英语, 70
INSERT INTO [StudentScores] SELECT 张三, 生物, 85
INSERT INTO [StudentScores] SELECT 李四, 语文, 80
INSERT INTO [StudentScores] SELECT 李四, 数学, 92
INSERT INTO [StudentScores] SELECT 李四, 英语, 76
INSERT INTO [StudentScores] SELECT 李四, 生物, 88
INSERT INTO [StudentScores] SELECT 码农, 语文, 60
INSERT INTO [StudentScores] SELECT 码农, 数学, 82
INSERT INTO [StudentScores] SELECT 码农, 英语, 96
INSERT INTO [StudentScores] SELECT 码农, 生物, 78

  执行结果:

技术分享图片

2、行转列sql

SELECT * FROM [StudentScores] /*数据源*/
AS P
PIVOT 
(
    SUM(Score/*行转列后 列的值*/) FOR 
    p.Subject/*需要行转列的列*/ IN ([语文],[数学],[英语],[生物]/*列的值*/)
) AS T

  执行结果:

技术分享图片

 

二、列转行

1、测试数据准备

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

  执行结果:

技术分享图片

2、列转行的sql

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中行转列(PIVOT)与列转行(UNPIVOT)

标签:ogr   arc   select   nat   core   union   tab   pivot   英语   

原文地址:https://www.cnblogs.com/xingyadian/p/9875972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!