您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

2020年6月18日面试题 SqlServer知识

bubuko 2022/1/25 19:41:00 sqlserver 字数 1512 阅读 1004 来源 http://www.bubuko.com/infolist-5-1.html

现有如下的表数据 通过sql语句将其改成列转行 解题思路: 先按num分组排序生成rIndex 再按名称分组score排序生成index 最后将2张分组排序的数据拼起来 select * from 面试题 select name,score1,score2 from( select 面试题.Name ...

现有如下的表数据

技术分享图片

 

 

通过sql语句将其改成列转行

技术分享图片

 

 

解题思路:

  1. 先按num分组排序生成rIndex
  2. 再按名称分组score排序生成index
  3. 最后将2张分组排序的数据拼起来
select * from 面试题

select name,score1,score2 from(
	select 面试题.Name,面试题.score as score1,r.score as score2,ROW_NUMBER() over(partition by 面试题.Name order by 面试题.score) rIndex2 from 面试题
	inner join(
		select name,ROW_NUMBER() over(partition by num order by num) rIndex,score from 面试题
	) r on  面试题.Name=r.Name
	where r.score<>面试题.score
)a  where rIndex2=1
order by score1 asc

  

技术分享图片

 

了解更多的列转行信息,请查看:SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行

2020年6月18日面试题 SqlServer知识

原文:https://www.cnblogs.com/licin/p/13159399.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶