Oracle / SQL-需要查找与其他列

时间:2015-06-09 06:41:28

标签: sql oracle

我有一张包含以下数据的表格:

NAME    VALUE

ABC     Y
ABC     Y
ABC     Y
ABC     Y
ABC     Y
DEF     W
DEF     Y
DEF     Y
DEF     Y
DEF     Y
GHI     Y
GHI     Y
GHI     Y
GHI     Y
GHI     Y

现在我想编写一个查询,返回那些具有此特定名称的行中所有值相同的名称。

理想的输出是:

ABC
GHI

因为ABC和GHI的所有值都等于Y.

2 个答案:

答案 0 :(得分:0)

select NAME 
  from YOUR_TABLE
  group by NAME
  having count(distinct VALUE) = 1
     and min(VALUE) = 'Y'

答案 1 :(得分:0)

使用DISTINCT删除重复项,使用NOT EXISTS来避免使用除Y之外的其他值。

select distinct name
from tablename t1
where not exists (select 1 from tablename t2
                  where t1.name = t2.name
                    and t2.value <> 'Y')