sql - SQL 喜欢但不喜欢
问题描述
目前我的脚本有一些问题。
问题是这样的“显示所有参加事件 201504 但未参加事件 201504 的汽车。因此,如果它们未参与事件 01,则不应显示它们。他们目前正在这样做。
我做了如下查询,但无法进一步了解。
select *
from autos a
join deelnemers d on a.autonr = d.autonr
join evenementen e on d.evenementnr = e.evenementnr
where e.evenementnr = '201504'
and e.evenementnr != '201501'
order by bouwjaar desc
解决方案
一种选择使用聚合:
select a.bouwjaar
from autos a
join deelnemers d on a.autonr = d.autonr
join evenementen e on d.evenementnr = e.evenementnr
group by a.bouwjaar
having
count(case when e.evenementnr = '201504' then 1 end) > 0 and
count(case when e.evenementnr != '201501' then 1 end) = 0
order by a.bouwjaar desc;
这个想法是在聚合模式下运行您的查询,考虑属于给定汽车的每组记录。然后,我们在HAVING
子句中断言在 上至少发生了一个事件201504
,同时还断言在 上没有发生任何事件201501
。