码迷,mamicode.com
首页 > 数据库 > 详细

【SQL语句】两种方式行转列,内含pivot函数

时间:2020-09-18 02:33:39      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:else   shu   inf   需要   create   列转行   float   bsp   sele   

先建一个新表:

CREATE  TABLE [StudentScores]
(
   [UserName]         NVARCHAR(20),        --学生姓名
    [Subject]          NVARCHAR(30),        --科目
    [Score]            FLOAT,               --成绩
)
 
INSERT INTO [StudentScores] SELECT Nick, 语文, 80
 
INSERT INTO [StudentScores] SELECT Nick, 数学, 90
 
INSERT INTO [StudentScores] SELECT Nick, 英语, 70
 
INSERT INTO [StudentScores] SELECT Nick, 生物, 85
 
INSERT INTO [StudentScores] SELECT Kent, 语文, 80
 
INSERT INTO [StudentScores] SELECT Kent, 数学, 90
 
INSERT INTO [StudentScores] SELECT Kent, 英语, 70
 
INSERT INTO [StudentScores] SELECT Kent, 生物, 85

第一种方法:

SELECT 
      UserName, 
      MAX(CASE Subject WHEN 语文 THEN Score ELSE 0 END) AS 语文,
      MAX(CASE Subject WHEN 数学 THEN Score ELSE 0 END) AS 数学,
      MAX(CASE Subject WHEN 英语 THEN Score ELSE 0 END) AS 英语,
      MAX(CASE Subject WHEN 生物 THEN Score ELSE 0 END) AS 生物
FROM dbo.[StudentScores]
GROUP BY UserName
 技术图片

第二种方法:

SELECT * FROM StudentScores--第一步
pivot 
(
sum(Score) ----第三步 
for Subject in (语文,数学,英语,生物))---第二步 
as  成绩


第一步:从数据源查询数据
第二步:行转列的列名,将哪一列的数据转为列名
第三步:新的列名需要显示的值
技术图片

 

跟第一种方法结果一致。 

方法参考以下链接:

https://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html

https://www.jianshu.com/p/8f929264995e

【SQL语句】两种方式行转列,内含pivot函数

标签:else   shu   inf   需要   create   列转行   float   bsp   sele   

原文地址:https://www.cnblogs.com/wwHww/p/13677210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!