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

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

1 DECLARE @subject varchar(2000) 2 DECLARE @name varchar(2000) 3 DECLARE @colName varchar(500)  --声明@colName变量,获取列名科目 4 set @colName = '' 5  6 --INFORMATION_SCHEMA.COLUMNS数据库的表名称,获取表名为A_Table中列名不为name的其他列名,@colName=[Chinese],[Math],[English],[History],[Geography],[Organism],[Chymistry], 7 SELECT @colName=@colName+'['+COLUMN_NAME+'],' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='A_Table' AND COLUMN_NAME!='name' 8  9 --从表A_Table中获取字段Name的值,@name=[张三],[李四],[王五],[赵六],10 select @name=LEFT(name,LEN(name)-1) from (select (SELECT '['+Name+'],' FROM A_Table FOR XML PATH('')) as name) as a11 12 --@subject=[Chinese],[Math],[English],[History],[Geography],[Organism],[Chymistry]13 select @subject=subString(@colName,1,len(@colName)-1)14 15 --UNPIVOT用于列转行16 --PIVOT用于将列值旋转为列名(即行转列),语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P17 exec(18     '19     select * from20     (21         SELECT name,CAST(kemu as FLOAT) as kemu,科目 22         FROM A_Table as t23         unpivot(kemu for 科目 in('+@subject+')) as b24     ) as a25     pivot(sum(kemu) for name in('+@name+')) as b26     '27 )28 29 --原表A_Table30 select * from A_Table
View Code

 

执行结果如下:

  

转换后格式        
科目 张三 李四 王五 赵六
Chinese 60 70 80 90
Chymistry 60 70 80 90
English 60 70 80 90
Geography 60 70 80 90
History 60 70 80 90
Math 60 70 80 90
Organism 60 70 80 90

 

原表数据格式              
Name Chinese Math English History Geography Organism Chymistry
张三 60 60 60 60 60 60 60
李四 70 70 70 70 70 70 70
王五 80 80 80 80 80 80 80
赵六 90 90 90 90 90 90 90

转载于:https://www.cnblogs.com/hbwy/p/4359209.html

你可能感兴趣的文章
Microsoft Dynamics AX 2012 正式版虚拟机
查看>>
iOS-CALayer图片淡入淡出动画
查看>>
Python学习笔记
查看>>
Oracle
查看>>
MAT(MemoryAnalyzerTool)
查看>>
分享实用的JavaScript代码库
查看>>
46. Permutations
查看>>
49. Group Anagrams
查看>>
团队作业7——第二次项目冲刺-Beta版本项目计划
查看>>
【Android】3.7 UI控制功能
查看>>
Linux下搭建tomcat和jre的环境
查看>>
国庆节
查看>>
java jni和android java ndk
查看>>
练习:WinForm 登录界面
查看>>
vue双向绑定原理
查看>>
初学python,感受和C的不同
查看>>
洛谷P3146 [USACO16OPEN]248
查看>>
Codeforces Round #419 (Div. 2) A-E
查看>>
【Leetcode】Path Sum II
查看>>
asp.net 2.0 导出DataTable到Excel中
查看>>