-
sql server行列转化
- 姓名 课程 分数
- 张三 语文 74
- 张三 数学 83
- 张三 物理 93
- 李四 语文 74
- 李四 数学 84
- 李四 物理 94
-
- 想变成(得到如下结果):
- 姓名 语文 数学 物理
- 李四 74 84 94
- 张三 74 83 93
-
- create table sc(姓名 varchar(10),课程 varchar(10),分数 float)
-
- insert into sc
- select '张三','语文',74
- union
- select '张三','数学',83
- union
- select '张三','物理',93
- union
- select '李四','语文',74
- union
- select '李四','数学',84
- union
- select '李四','物理',94
-
- 方法1:
- declare @sql varchar(max)
- set @sql='select '
- select @sql=@sql+', max(case when 课程='''+课程+''' then 分数 else '''' end)['+课程+']' from (select distinct 课程 from sc)t
-
- set @sql = STUFF(@sql,8,1,'')
- print @sql
- set @sql=@sql+' ,姓名 from sc group by 姓名'
- exec(@sql)
-
- 方法2:
-
- select 姓名,数学,物理,语文 from sc pivot( max(分数) for 课程 in(数学,物理,语文))t
-
-
- 方法3:
- declare @sql varchar(8000)
- select @sql = isnull(@sql + '],[' , '') + 课程 from sc group by 课程
- print @sql
- set @sql = '[' + @sql + ']'
- exec ('select * from (select * from tb) a pivot (max(分数) for 课程 in (' + @sql + ')) b')
-
相关阅读:
Linux学习 :字符设备框架
Linux学习 :Uboot, Kernel, 根文件系统初步分析
Linux学习 : 裸板调试 之 配置UART
Linux学习 : 裸板调试 之 配置使用NAND FLASH
Linux学习 : 裸板调试 之 使用MMU
Linux I2C总线控制器驱动(S3C2440)
Linux I2C总线设备驱动模型分析(ov7740)
Linux摄像头驱动学习之:(六)UVC-基本框架代码分析
【Java】 剑指offer(25) 合并两个排序的链表
【Java】 剑指offer(24) 反转链表
-
原文地址:https://www.cnblogs.com/johnblogs/p/8391803.html
Copyright © 2020-2023
润新知