一个多列 行列倒置的问题,各位牛人帮帮忙。。。

youjianbo_han_87 2012-01-18 04:23:09
之前oracle mysql sqlserver坛子里,都有那种行列倒置的sql

场景如下

查询结果

学号 科目 成绩
001 数学 80
001 语文 90

展现成
学号 数学 语文
001 80 90

可以转换成下面这样的吗?
学号 科目1 成绩1 科目2 成绩2
001 数学 80 语文 90

只用纯sql和数据库内置的函数,而不用什么object,过程等。
...全文
212 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心飞翔 2012-01-18
  • 打赏
  • 举报
回复
实测:
dawugui 2012-01-18
  • 打赏
  • 举报
回复
select 学号 ,
max(case when px = 1 then 科目 else '') 科目1,
max(case when px = 1 then 成绩 else 0) 成绩1,
max(case when px = 2 then 科目 else '') 科目2,
max(case when px = 2 then 成绩 else 0) 成绩2
from
(
select t.* , row_number() over(partition by 学号 order by 科目) px from tb t
)m
group by 学号

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧