sql语句实现行转列的3种方法 |
您所在的位置:网站首页 › sql查询行 › sql语句实现行转列的3种方法 |
前言
一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理。 第一种:静态行转列 select UserName 姓名, sum(case Subject when '语文' then Source else 0 end) 语文,sum(case Subject when '数学' then Source else 0 end) 数学, sum(case Subject when '英语' then Source else 0 end) 英语 from TestTable group by UserName用povit行转列 select * from (select UserName,Subject,Source from TestTable) testpivot(sum(Source) for Subject in(语文,数学,英语) ) pvt用存储过程行转列 alter proc pro_test @userImages varchar(200), @Subject varchar(20), @Subject1 varchar(200), @TableName varchar(50) as declare @sql varchar(max)='select * from (select '+@userImages+' from'+@TableName+') tab pivot ( sum('+@Subject+') for Subject('+@Subject1+') ) pvt' exec (@sql) go exec pro_test 'UserName,Subject,Source', 'TestTable', 'Subject', '语文,数学,英语'它们的效果都是这样的
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |