基于分组的Oracle Sql Extract ID

时间:2018-08-24 06:16:41

标签: sql oracle

我有一些ID和标志,我只想输出ID标志为有效的那些ID。 在获得有效之前,有一些先决条件:

  • 一个ID最多出现2次,最少出现1次。
  • 如果一个ID出现2次并且标记为有效/无效,则我们需要排除这些ID。

  • 如果一个ID具有单个无效标志,则还需要将其排除。

  • 如果只有一个具有有效记录的单一ID应当包含。

Image

1 个答案:

答案 0 :(得分:1)

1。获取计数为1且小于2且仅具有1个不同标志的所有ID。因此,在子查询中:HAVING COUNT(*)<=2 AND COUNT (DISTINCT Flag)=1

满足条件1和4并帮助我们满足条件2,3

2.Then我正在检查这些标志都不应该是“ INVALID” 因此,在where子句AND Flag = 'Valid'中 满足条件2,3

SELECT *
FROM T
WHERE ID IN (
                SELECT ID
                FROM T
                GROUP BY ID
                HAVING COUNT(*)<=2 AND COUNT (DISTINCT Flag)=1)
AND Flag = 'Valid'