Oracle SQL – 筛选出包含具有特定值的行的分区或行组

前端之家收集整理的这篇文章主要介绍了Oracle SQL – 筛选出包含具有特定值的行的分区或行组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试解决以下问题:数据在表中组织,其中列X作为信息的外键(它是标识此表中的一组行的ID,它们属于一个捆绑包,由特定的所有者拥有)另一个表中的实体).因此,X的每个不同值都有多个与之关联的行.我想过滤掉在Q列中包含与其相关联的行的X的所有不同值,其中包含值“ABC”.

数据看起来像这样:

Column X   Column Q
--------   ---------
123        ABC
123        AAA    
123        ANQ
456        ANQ
456        PKR
579        AAA
579        XYZ
886        ABC

查询应该返回“456”和“579”,因为X的这两个不同的值在Q列中没有包含值“ABC”的行.

我正在考虑使用减函数(选择不同的X减去(选择不同的X,其中Q =“ABC”)),因为我想要的只是X的不同值.但我想知道是否有更有效的方法这样做可以避免子查询?例如,如果我可以在X上对表进行分区并抛出Q中具有值“ABC”的行的每个分区?

解决方法

这应该工作:

SELECT DISTINCT t.ColX
FROM mytable t
  LEFT JOIN mytable t2 on t.colx = t2.colx and t2.colq = 'ABC'
WHERE t2.colx IS NULL

这是SQL Fiddle.

祝好运.

猜你在找的Oracle相关文章