56,678
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([学生] nvarchar(23),[课程] nvarchar(22),[分数] nvarchar(23))
Insert #T
select N'学生1',N'语文',N'10分' union all
select N'学生1',N'数学',N'30分' union all
select N'学生1',N'英语',N'50分' union all
select N'学生2',N'语文',N'10分' union all
select N'学生2',N'数学',N'30分' union all
select N'学生3',N'语文',N'10分' union all
select N'学生3',N'数学',N'30分' union all
select N'学生3',N'英语',N'50分'
Go
--测试数据结束
SELECT DISTINCT #T.学生 FROM #T JOIN (
Select * from #T WHERE 学生='学生1'
)t ON t.课程 = #T.课程 AND t.学生 <> #T.学生
GROUP BY #T.学生 HAVING COUNT(1) = (Select COUNT(1) from #T WHERE 学生='学生1')
SELECT DISTINCT #T.学生 FROM #T
GROUP BY #T.学生 HAVING COUNT(1) <> (Select COUNT(1) from #T WHERE 学生='学生1')
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([学生] nvarchar(23),[课程] nvarchar(22),[分数] nvarchar(23))
Insert #T
select N'学生1',N'语文',N'10分' union all
select N'学生1',N'数学',N'30分' union all
select N'学生1',N'英语',N'50分' union all
select N'学生2',N'语文',N'10分' union all
select N'学生2',N'数学',N'30分' union all
select N'学生3',N'语文',N'10分' union all
select N'学生3',N'数学',N'30分' union all
select N'学生3',N'英语',N'50分'
Go
--测试数据结束
SELECT DISTINCT #T.学生 FROM #T JOIN (
Select * from #T WHERE 学生='学生1'
)t ON t.课程 = #T.课程 AND t.学生 = #T.学生
GROUP BY #T.学生 HAVING COUNT(1) = (Select COUNT(1) from #T WHERE 学生='学生1')
SELECT DISTINCT #T.学生 FROM #T
GROUP BY #T.学生 HAVING COUNT(1) <> (Select COUNT(1) from #T WHERE 学生='学生1')