首页 > 解决方案 > 如何从复杂条件下的表中选择值?

问题描述

我有一个包含 3 列的表:course_name, year, semester.

现在我想找出每年(2001 年和 2002 年)每个学期(S1 和 S2)都有哪些科目。

我尝试了一个小时的写作CASE WHENGROUP BY HAVING但未能得到正确的结果。

表主题

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

标签: sqlsql-server

解决方案


你可以试试下面 -

演示

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

推荐阅读