当前位置: 代码迷 >> Sql Server >> 查询脚本,三个表联合查询 三维表
  详细解决方案

查询脚本,三个表联合查询 三维表

热度:50   发布时间:2016-04-24 08:52:04.0
求一个查询脚本,三个表联合查询 三维表?
有课程表kc
id,name
1,语文
2,数学
3,英语
有学生表stu
id,name
1,张三
2,李四
3,王五
有成绩表
kid,sid,cj
1,1,90
2,1,80

如何得到以下结果
          ,张三,李四,王五
语文   90,   0,      0
数学 ,80,    0,      0
英语, 0,       0,     0
------解决思路----------------------
with kc(kid,kname) as
(
select 1,'语文' union all
select 2,'数学' union all
select 3,'英语'
),
stu(sid,sname) as 
(
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五'
),
cj(kid,sid,cj) as 
(
SELECT 1,1,90 UNION ALL
SELECT 2,1,80
),
tb as
(
select b.kname,c.sname,a.cj from kc b
left join cj a  on a.kid=b.kid
left join stu c on c.sid=a.sid
)
select kname,
sum(case when sname='张三' then cj else 0 end)'张三',
sum(case when sname='李四' then cj else 0 end)'李四',
sum(case when sname='王五' then cj else 0 end)'王五'
from tb group by kname

------解决思路----------------------
引用:
这些case when 
不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的


額。。。 你打算將几千个学生,都横着排?
 那怎么看?

我不知道你要这么设计表的目的是啥了。
个人觉得,学生名字竖排, 科目横排会比较好看点。
毕竟,我们浏览习惯是竖着滚动的多。
------解决思路----------------------
引用:
Quote: 引用:

这些case when 
不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的


額。。。 你打算將几千个学生,都横着排?
 那怎么看?

我不知道你要这么设计表的目的是啥了。
个人觉得,学生名字竖排, 科目横排会比较好看点。
毕竟,我们浏览习惯是竖着滚动的多。

+1,学生横排看起来怪怪的,非要横排的话就用动态生成的吧
  相关解决方案