我正在尝试编写查询以找出B列值不同的重复项。我的要求是:“仅当组内B列中的所有值应该不同并且在不同值中,COL B中的一个值应为EXTERNAL时,我才需要COL A值作为输出”
下面是我的输入数据
我的预期输出如下显示为蓝色
在输出中您可以看到,即使对于COLA值为156的组,COL B中的值有所不同,但由于输出中没有外部,因此我并不期望在输出中看到该值。
答案 0 :(得分:0)
您可以使用GROUP BY
使用以下解决方案:
SELECT test.colA
FROM test INNER JOIN (
SELECT colA, COUNT(DISTINCT colB) AS cntUnique, COUNT(colB) AS cntAll
FROM test
GROUP BY colA
)t ON test.colA = t.colA
GROUP BY test.colA
HAVING SUM(CASE WHEN colB = 'EXTERNAL' THEN 1 ELSE 0 END) = 1
AND MAX(t.cntUnique) = MAX(t.cntAll)