我有一些ID和标志,我只想输出ID标志为有效的那些ID。 在获得有效之前,有一些先决条件:
如果一个ID出现2次并且标记为有效/无效,则我们需要排除这些ID。
如果一个ID具有单个无效标志,则还需要将其排除。
如果只有一个具有有效记录的单一ID应当包含。
答案 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'