日期:2014-05-19  浏览次数:20531 次

求一下表的SQL语句
表结构如下
表名:T1

ID             Name               Subject                   Score
1               李军               语文                         78
2               李军               数学                         63
3               王明               语文                         58
4               王明               数学                         67
5               李军               英语                         49
6               陈含               语文                         90
……
……
……
说明:科目有很多,不只是上面出现的语文,数学,英语。

要求查询出至少有两门学科(包含两门)及格的学生姓名
谢谢

------解决方案--------------------
select name from t1 where score > = 60 group by name having count(*) > = 2
------解决方案--------------------
if object_id( 'pubs..T1 ') is not null
drop table T1
go

create table T1(ID int,Name varchar(10),Subject varchar(10),Score int)
insert into T1(ID,Name,Subject,Score) values(1, '李军 ', '语文 ', 78)
insert into T1(ID,Name,Subject,Score) values(2, '李军 ', '数学 ', 63)
insert into T1(ID,Name,Subject,Score) values(3, '王明 ', '语文 ', 58)
insert into T1(ID,Name,Subject,Score) values(4, '王明 ', '数学 ', 67)
insert into T1(ID,Name,Subject,Score) values(5, '李军 ', '英语 ', 49)
insert into T1(ID,Name,Subject,Score) values(6, '陈含 ', '语文 ', 90)
go

select name from t1 where score > = 60 group by name having count(*) > = 2

drop table T1

/*
name
----------
李军

(所影响的行数为 1 行)
*/
------解决方案--------------------
--过滤Score > = 60 后,按Name分组,取记录数> =2的姓名

select Name
from T1
where Score > = 60
group by Name
having count(*) > = 2