使用条件获取重复值

时间:2019-05-03 08:01:10

标签: sql-server

我正在尝试编写查询以找出B列值不同的重复项。我的要求是:“仅当组内B列中的所有值应该不同并且在不同值中,COL B中的一个值应为EXTERNAL时,我才需要COL A值作为输出”

下面是我的输入数据

enter image description here

我的预期输出如下显示为蓝色

enter image description here

在输出中您可以看到,即使对于COLA值为156的组,COL B中的值有所不同,但由于输出中没有外部,因此我并不期望在输出中看到该值。

1 个答案:

答案 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)

demo on dbfiddle.uk