一、行转列

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

  执行结果:

最新文章

  1. learning to rank
  2. win7 解锁注册表
  3. android 全屏视频播放(SurfaceView + MediaPlayer)
  4. nmap与ntop
  5. XAML
  6. 第一个C#应用 【搜索软件】
  7. POJ 2299 Ultra-QuickSort 归并排序、二叉排序树,求逆序数
  8. bootstrap注意事项(二)
  9. JAVA读取、写入Excel表格(含03版)
  10. UVA - 1632 Alibaba 区间dp
  11. SQL之DISTINCT
  12. 原生js :removeClass和addClass
  13. Java中class的getName()和getCanonicalName()两个方法的区别
  14. Mac下利用Cordova打包 iOS App以及出现的问题
  15. 深入C# String类
  16. Android--activity切换时的动画
  17. H3C系列之三层交换机开启telnet管理的配置
  18. git忽略掉文件权限检查
  19. Jquery attr("checked") 返回checked或undefined 获取选中失效
  20. MySQL的各种SHOW

热门文章

  1. UITextField的使用、介绍、讲解、全解、简介、说明
  2. 网络请求中的URL中传bool型数据
  3. 二、js中基础知识
  4. windows10更换mysql8.0.17
  5. java基础面试题(转)
  6. 5.2 Nginx Http 反向代理
  7. 公用表表达式(CTE) with as 片段
  8. 十一 JSP&EL&JSTL
  9. liunx命令用到的
  10. 蓝桥杯 2n皇后问题