前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL 如何将表中行列互换

SQL 如何将表中行列互换

作者头像
繁华是客
发布2023-03-03 20:11:18
1K0
发布2023-03-03 20:11:18
举报

在工作中,我们发现有时候需要将表中的行列进行互换。

SQL 列换成行

SQL 中可以使用PIVOT这个命令,同理,行换成列使用UNPIVOT。

代码语言:javascript
复制

SELECT * FROM 
(SELECT [StudentID]
      ,[Surname]
      ,[ForeName],[YearGroup]
	  ,[Class]
      ,[SubjectName]
	  --,[SubjectChineseName]
      ,CAST([StudentMarkData] AS float) AS Mark2
  FROM [newDB].[dbo].[ClassMarksheet]
  ) AS BaseTable
  PIVOT( 
	AVG(Mark2)
	FOR [SubjectName] in ([Mathematics],[Chinese],[English],[Science])
) AS StudentMarksMerge

使用PIVOT需要注意的是,必须把其他列中同一学生不同信息列隐藏才可以。 例如:我们把一行一行列出的科目变成一列一列,我们的SubjectChineseName就要隐藏掉,否则Pivot出来的结果是同一个学生一样有四行。 只不过右边多出了四列科目而已。 我这里先CAST是因为需要转换格式,从NVARCHAR转为FLOAT。 如果我想要转换的行列数据不是数字的话,应该用什么? 我们可以通过COUNT得到出现的次数,也可以通过MIN()或者MAX()直接显示内容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL 列换成行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档