declare @t table(班级 varchar(10),学号 varchar(10),姓名 varchar(10),学年 varchar(10),学期 int,成绩 varchar(10)) insert @t select '1班','200001','张三','2000-2001',1,'不及格' union all select '1班','200001','张三','2000-2001',1,'50' union all select '1班','200001','张三','2000-2001',1,'作弊' union all select '2班','200001','李四','2000-2001',1,'85' union all select '2班','200001','李四','2000-2001',1,'65' union all select '2班','200001','李四','2000-2001',1,'缺考'select * from @t a where (select count(*) from @t where 班级= a.班级 and 学号 = a.学号 and ((isnumeric(成绩) = 1 and cast(成绩 as int) < 60) or (isnumeric(成绩) = 0 and 成绩 in('不及格','作弊','缺考')) )) >2 /*在此指定要查询的不及格门数*//*结果 班级 学号 姓名 学年 学期 成绩 1班 200001 张三 2000-2001 1 不及格 1班 200001 张三 2000-2001 1 50 1班 200001 张三 2000-2001 1 作弊 */
insert @t
select '1班','200001','张三','2000-2001',1,'不及格' union all
select '1班','200001','张三','2000-2001',1,'50' union all
select '1班','200001','张三','2000-2001',1,'作弊' union all
select '2班','200001','李四','2000-2001',1,'85' union all
select '2班','200001','李四','2000-2001',1,'65' union all
select '2班','200001','李四','2000-2001',1,'缺考'select * from @t a
where (select count(*) from @t where 班级= a.班级 and 学号 = a.学号 and
((isnumeric(成绩) = 1 and cast(成绩 as int) < 60) or (isnumeric(成绩) = 0 and 成绩 in('不及格','作弊','缺考')) )) >2 /*在此指定要查询的不及格门数*//*结果
班级 学号 姓名 学年 学期 成绩
1班 200001 张三 2000-2001 1 不及格
1班 200001 张三 2000-2001 1 50
1班 200001 张三 2000-2001 1 作弊
*/