sql - 查询包含oracle db中多个字段的年份

标签 sql database oracle

我正在尝试在 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/

相关文章:

sql - 需要帮助编写递归查询

sql - NEXT_DAY 函数在 SQL 和 PL/SQL 中的工作方式不同吗?

python - 在 SQLAlchemy 生成的以下查询中,最可能导致 "ORA-00936: missing expression"的原因是什么?

mysql - WHERE 有两个子条件

MySQL "WITH"子句

database - 在 phpmyadmin 中导入/导出非常大的 mysql 数据库

database - 当我安装了PostgreSQL 9.3和8.4版本时,如何使Amazon Redshift在PGADMIN 3/PostgreSQL上运行?

sql - PL/SQL Developer 中执行过程的问题

mysql - mysql 语法错误 : Befor Update Trigger

python - SqlAlchemy 中的联接查询