查询包含oracle db

时间:2016-02-16 23:07:42

标签: sql database oracle

我正在尝试在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年,这是不正确的.. 我错过了什么? 任何帮助表示赞赏!

1 个答案:

答案 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