我有一个3列的表:course_name, year, semester。
现在我想找出在每学期(2001年和2002年)有课程的科目(S1和S2)。
我试着写了一个小时的CASE WHEN和GROUP BY HAVING,但是没有得到正确的结果。
table_subjects
course_name| year| semester
Programming 2001 S1
Programming 2001 S2
Programming 2002 S1
Programming 2002 S2
Law 2001 S1
Law 2001 S2
Law 2002 S2
Science 2001 S1
Science 2001 S2
Management 2002 S2
AI 2001 S1
Database 2001 S1
Database 2001 S2
Database 2002 S1
Database 2002 S2预期结果:
|course_name|
Programming
Database发布于 2019-04-18 05:42:42
你可以在下面试试-
select course_name
from t1 a
where year in (2001,2002) and exists (select 1 from t1 b where a.course_name=b.course_name
and a.year=b.year and semester in ('S1','S2') having count(distinct semester)=2)
group by course_name
having count(distinct year)=2 产出:
course_name
Database
Programming发布于 2019-04-18 12:07:21
SELECT T.course_name
FROM
(
SELECT course_name
FROM table_subjects
GROUP BY course_name,
year
HAVING COUNT(1) = 2
) T
GROUP BY T.course_name
HAVING COUNT(1) = 2;https://stackoverflow.com/questions/55739732
复制相似问题