查询一张表中的某个字段对应另一张表中多条数据某个字段等于第一张表的那个字段的数据,并按要求显示

给的表例如
表一:
stuID stuName
1 小明
2 小红

表二:
stuID  course   Score
    1        数学       97
    1        语文        70
    1        英语        88
    2        数学        92

    要求查询结果为:
    stuID   stuName   语文   数学   英语
        1         小明          70       97      88
        2         小红                     92

5个回答

类似下面这样,下面语句没有调测过。

 select stuID,(select stuName from 表一 where 表一.stuID=t.stuID) stuName 
from(
select sum(case course when '数学' then Score else 0 end) 数学
,sum(case course when '语文' then Score else 0 end) 语文
,sum(case course when '英语' then Score else 0 end) 英语,stuId
from 表二 group by stuId
)

另外,可参见http://blog.csdn.net/danielinbiti/article/details/44977749微博中写的这种方式的过程

select stuName,course,score from stu s and score sc where s.stuId=sc.stuId grop by stuId

qq_15870133
小抛 这样是不会按要求那样显示的
5 年多之前 回复
qq_15870133
小抛 这样是不会按要求那样显示的
5 年多之前 回复

select stuID, stuName, '数学', '语文', '英语'
from (select stuID, stuName from 表一) as t1
join (select stuID, sum(case course '数学' then Score else 0 end) as '数学',
sum(case course '语文' then Score else 0 end) as '语文',
sum(case course '英语' then Score else 0 end) as '英语' from 表二 group by stuID) as t2
on t1.stuID=t2.stuID;

qq_15870133
小抛 谢谢您,能不能再弄个科目总分和总分排名?
5 年多之前 回复

说实话 没怎么看懂你的问题
select * from 表1名字 t1
left join 表2名字 t2 on t1.stuid=t2.stuid
go
这是联接查询 将两张表中的内容查出来 放在一张表显示
可以直接将代码拖过去运行 你试试 另外 要显示你指定的列的话 将* 换成列名1,列名2.。。。
希望对你有用

select stuID,stuName,[语文],[数学],[英语] from (select stuName,t12.stuID,course,score from t12,t11 where t11.stuID=t12.stuID) as ST pivot
(sum(score) for course in([数学],[语文],[英语])) as PT order by stuID
stuID stuName 语文 数学 英语
1 小明 70 97 88
2 小红 NULL 66 NULL

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐