sql语句实现行转列的3种方法实例
网络编程 2021-07-05 16:50www.168986.cn编程入门
将列值旋转为列名(即行转列)是我们在开发中经常会遇到的一个需要,狼蚁网站SEO优化这篇文章主要给大家介绍了关于sql语句实现行转列的3种方法,分别给出了详细的示例代码,需要的朋友可以参考借鉴,狼蚁网站SEO优化来一起学习学习吧。
前言
一般在做数据统计的时候会用到行转列,假如要统计学生的成绩,数据库里查询出来的会是这样的,但这并不能达到想要的效果,所以要在查询的时候做一下处理,狼蚁网站SEO优化话不多说了,来一起看看详细的介绍。
CREATE TABLE TestTable( [Id] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar](50) NULL, [Subject] [nvarchar](50) NULL, [Source] [numeric](18, 0) NULL ) ON [PRIMARY] go INSERT INTO TestTable ([UserName],[Subject],[Source]) SELECT N'张三',N'语文',60 UNION ALL SELECT N'李四',N'数学',70 UNION ALL SELECT N'王五',N'英语',80 UNION ALL SELECT N'王五',N'数学',75 UNION ALL SELECT N'王五',N'语文',57 UNION ALL SELECT N'李四',N'语文',80 UNION ALL SELECT N'张三',N'英语',100 GO
这里我用了三种方法来实现行转列第一种静态行转列
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', '语文,数学,英语'
它们的效果都是这样的
以上三种方式实现行转列,我们可以根据自己的需求采用不同的方法
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对狼蚁SEO的支持。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南