我正在尝试在 oracle 数据库中编写一个查询,帮助我选择包含所有 3 个数据的内容,让我举一个例子 假设我有一张 table
ltr year
--------
'a' 2003
'b' 2003
'c' 2005
'a' 2003
'a' 2003
'j' 2008
'c' 2003
我想返回包含至少一个字母 a、b、c 实例的年份。在这里,2003 年将是唯一返回的年份。
目前为止
select distinct year
from Data
where letter = 'a' or letter = 'b' or letter = 'c';
这也将返回 2005 年,这是不正确的。 我错过了什么? 感谢您的帮助!
最佳答案
在 where 子句中指定您想要的字母,并使用 having count(distinct ltr) = 3
获取所有字母至少出现一次的所有年份。
select year
from data
where ltr in ('a','b','c')
group by year
having count(distinct ltr) = 3
如果您想要只有字母 'a'、'b'、'c' 的年份:
select year
from data
group by year
having count(case when ltr not in ('a','b','c') then 1 end) = 0
关于sql - 查询包含oracle db中多个字段的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444788/