sql - SQL/Oracle 仅返回第二列中具有相同值的字段
问题描述
仅当在重复日志的第 2 列中找到相同的值时才需要返回第 1 列。如果看到任何其他值,则从结果中排除。
A 2
A 2
A 2
A 2
A 2
排除
B 2
B 1
B 2
B 3
B 2
select b. column1
from
( select *
from table
where column2 != 1
) b
where b.column2 = 2
结果:
A
解决方案
您可以使用聚合和HAVING
:
SELECT col1
FROM tab
GROUP BY col1
HAVING COUNT(DISTINCT col2) = 1;
或者如果您需要原始行:
SELECT s.*
FROM (SELECT t.*, COUNT(DISTINCT col2) OVER(PARTITION BY col1) AS cnt
FROM tab t) s
WHERE s.cnt = 1;