求一个查询脚本,三个表联合查询 三维表?

瘦马 技术部门负责人  2015-09-30 11:10:55
有课程表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
...全文
186 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
瘦马 2015-09-30
实际情况是,
引用 4 楼 qq_17482963 的回复:
[quote=引用 3 楼 yangb0803 的回复:] [quote=引用 2 楼 hwhtj 的回复:] 这些case when 不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的
額。。。 你打算將几千个学生,都横着排? 那怎么看? 我不知道你要这么设计表的目的是啥了。 个人觉得,学生名字竖排, 科目横排会比较好看点。 毕竟,我们浏览习惯是竖着滚动的多。[/quote] +1,学生横排看起来怪怪的,非要横排的话就用动态生成的吧[/quote] 实际情况是: 项目表、公司表、业绩表 项目有几百个,公司有几十个,业绩表有几十万条数据 但几十个,也不好每个公司写一篇不是
回复
qq_17482963 2015-09-30
引用 3 楼 yangb0803 的回复:
[quote=引用 2 楼 hwhtj 的回复:] 这些case when 不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的
額。。。 你打算將几千个学生,都横着排? 那怎么看? 我不知道你要这么设计表的目的是啥了。 个人觉得,学生名字竖排, 科目横排会比较好看点。 毕竟,我们浏览习惯是竖着滚动的多。[/quote] +1,学生横排看起来怪怪的,非要横排的话就用动态生成的吧
回复
道玄希言 2015-09-30
引用 2 楼 hwhtj 的回复:
这些case when 不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的
額。。。 你打算將几千个学生,都横着排? 那怎么看? 我不知道你要这么设计表的目的是啥了。 个人觉得,学生名字竖排, 科目横排会比较好看点。 毕竟,我们浏览习惯是竖着滚动的多。
回复
瘦马 2015-09-30
引用 1 楼 qq_17482963 的回复:
............ 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[/code]
这些case when 不好写吧,学生个数可能有几千个呢,不可能每个人都写一次的
回复
qq_17482963 2015-09-30
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
回复
瘦马 2015-09-30
应该是一个交叉表的查询
回复
瘦马 2015-09-30
谢谢qq_17482963 你这个使用了一个过渡表tb 不使用临时表,应该怎么弄呀
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-09-30 11:10
社区公告
暂无公告