博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 行转列 列转行 PIVOT UNPIVOT
阅读量:5040 次
发布时间:2019-06-12

本文共 1011 字,大约阅读时间需要 3 分钟。

1.基础表

2.行转列,注意ISNULL函数的使用,在总成绩的统计中,ISNULL(-,0) 有必要使用

3.列转行,对列语文、数学、英语、政治,进行列转行,转为了2列,score scname 这两列,是新列,可以取名为 score11 scname22,随意

4.测试脚本

SELECT * FROM dbo.SC--插入测试数据INSERT dbo.SC        SELECT NEWID(),'001','jack1','数学',88UNIONSELECT NEWID(),'002','jack2','语文',55UNIONSELECT NEWID(),'003','jack3','英语',66UNIONSELECT NEWID(),'004','jack4','政治',77--行转列SELECT * FROM dbo.SCPIVOT (SUM(Score) FOR SCName IN(语文,数学,英语,政治)) AS p--列转行SELECT * FROM (    --这里是行转列    SELECT sno,sname,ISNULL(语文,0) AS '语文',ISNULL(数学,0) AS '数学',ISNULL(英语,0) AS '英语',ISNULL(政治,0) AS '政治' FROM dbo.SC    PIVOT (SUM(Score) FOR SCName IN(语文,数学,英语,政治)) AS p) tUNPIVOT (score FOR SCName IN(语文,数学,英语,政治)) AS upWHERE score !=0SELECT * FROM (    --这里是行转列    SELECT sno,sname,ISNULL(语文,0) AS '语文',ISNULL(数学,0) AS '数学',ISNULL(英语,0) AS '英语',ISNULL(政治,0) AS '政治' FROM dbo.SC    PIVOT (SUM(Score) FOR SCName IN(语文,数学,英语,政治)) AS p) tUNPIVOT (Score11 FOR SCName22 IN(语文,数学,英语,政治)) AS upWHERE Score11 !=0

 

转载于:https://www.cnblogs.com/ligenyun/p/7599929.html

你可能感兴趣的文章
Swift基本语法
查看>>
ASP.Net超时时间已到解决办法
查看>>
MVC结构
查看>>
python静态方法和类方法
查看>>
一个int类型究竟占多少个字节
查看>>
三、编译和配置GDAL
查看>>
Redis使用sortedset缓存IP段数据
查看>>
为什么tcp的TIME_WAIT状态要维持2MSL
查看>>
【IOS】苹果重置安全问题,亲测有效!
查看>>
ASP.NET几种清除页面缓存的方法
查看>>
JSP的动态导入
查看>>
Class类的使用
查看>>
UCOS2_STM32F1移植详细过程(三)
查看>>
Alpha 冲刺 (5/10)
查看>>
[原创]浅谈移动互联网App兼容性测试
查看>>
推荐一款移动端天气App即刻天气
查看>>
数论整理
查看>>
基于FPGA的数字秒表(数码管显示模块和按键消抖)实现
查看>>
Mysql之执行计划
查看>>
propertychange事件导致的IE浏览器堆栈溢出
查看>>