SQL语句,求教高手!!

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:08:39
我遇到的问题是多表查询,但我只用一个表来简单说我的问题,比如我一张表,暂时不设置主键了,表名为students,字段有id,course,fenshu
表里有记录:
001 数学 88
001 英语 92
如何让其显示为:001 数学 88 英语 92

虽然不太明白你想怎样,不过如果都在同一张表的话,你可以试试这个,希望这语法能帮到你!
select id,course,fenshu from students where course='数学' union(select course,fenshu from students where course='英语')
这样应该能显示你想要的结果了!
union 是一个能将多个查询结果结合为一张新表显示的语句!

这样做是不合理的,但是如果你一定要这样做也不是不可以的。

Select a.*,b.course,b.fenshu From students a left join students b on a.id = b.id where a.id='001'

这样可以达到你的要求。

但是这样确实是不可去的。为什么不 Select 2条记录出来,然后在纵向列表呢。要是里面不止这2条记录,就不管用了。

SELECT ID, SUM(CASE WHEN SOURSE = '数学' THEN FENSHU ELSE THEN 0) AS 数学, SUM(CASE WHEN SOURSE = '英语' THEN FENSHU ELSE THEN 0) AS 英语 FROM STUDENTS (WHERE) GROUP BY ID

这个虽然和你的要求不大一样,但是应该可以满足你的需要了,

如果非常想要 你说的结果

SELECT ID, '数学' AS SUB, SUM(CASE WHEN SOURSE = '数学' THEN FENSHU ELSE THEN 0) AS 数学,
按照这么写

闲着没事试了一下一楼hubinhust的代码,结果出来了4行记录,效果同cross join语句.不行!!!

我的思路是,先在数据库建立各科成绩的视图:
create view sx
as
select * from st