我正在尝试在oracle db中编写一个查询,帮助我选择包含所有3个数据的内容,让我展示一个例子 说我有一张桌子
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年,这是不正确的.. 我错过了什么? 任何帮助表示赞赏!
答案 0 :(得分:1)
在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