不知道这句SQL怎么写?

dustwoo 2003-12-30 11:23:42
以下数据:
week time subject name
1 1 英文 张三
1 3 数学 李四
1 5 物理 王五
1 1 数据库 赵六
2 1 物理 小张
2 5 数学 小李
2 5 英文 小王
3 3 英文 小王
5 1 物理 小赵

我想得到如下结果:
time1 time3 time5
week subject(name) subject(name) subject(name)
1 英文(张三) 数学(李四) 物理(王五)
1 数据库(赵六)
2 物理(小张) 数学(小李)
2 英文(小王)
3 英文(小王)
4
5 物理(小赵)
6

麻烦各位帮帮忙,谢谢!
...全文
22 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Philippy 2003-12-31
  • 打赏
  • 举报
回复
你这个是交叉表,SQL SERVER实现比较复杂,你要用到临时表或视图才可以实现的
windywalk 2003-12-31
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2200/2200003.xml?temp=.3551905
windywalk 2003-12-31
  • 打赏
  • 举报
回复
你查一下行列转换的主题把
windywalk 2003-12-31
  • 打赏
  • 举报
回复
自己去找找吧,好象有不少的相似的问题,
dustwoo 2003-12-31
  • 打赏
  • 举报
回复
各位帮帮忙啊
Jianli2004 2003-12-31
  • 打赏
  • 举报
回复
如果同week time subject只有一个人,好办,否则要用变量

select [week],
(case when time=1 then subject+'('+name+') else '' end) as time1,
(case when time=3 then subject+'('+name+') else '' end) as time3,
(case when time=5 then subject+'('+name+') else '' end) as time5
from tbl a
order by [week],[time]
dustwoo 2003-12-30
  • 打赏
  • 举报
回复
那应该如何处理呢,给点意见吧!
playyuer 2003-12-30
  • 打赏
  • 举报
回复
这种交叉表不要指望一句搞定!

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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