这是在 DB2 中。我想编写查询,导致行中一个指定列中的值是不同的,但第二列中的值也不是不同的。
下面是一个示例数据集:
COL1 COL2 COL3
149999 Y 34567
149999 N 34567
148888 N 34567
147777 N 45678
156666 Y 56789
156666 N 56789
155555 N 56789
假设 COL1 是我想要不同的列,而 COL3 是我想要重复的列。
然后,我需要的查询将给出以下结果:
COL1 COL2 COL3
148888 N 34567
155555 N 56789
因为 COL1 在这些行中是唯一的,但 COL3 不是
抱歉,如果我解释得不好,我是 SQL/DB2 的初学者
窗口函数是一种方法:
select t.*
from (select t.*,
count(*) over (partition by col1) as cnt_col1,
count(*) over (partition by col3) as cnt_col3
from t
) t
where cnt_col1 = 1 and cnt_col3 > 1;
如果由于某种原因您不想使用窗口函数。
SELECT *
FROM TABLE_1
WHERE EXISTS -- unique field
( SELECT 1
FROM TABLE_1 T2
WHERE T1.Field2 = T2.Field2
GROUP
BY T2.Field2
HAVING COUNT(1) = 1
)
AND EXISTS -- nonunique field
( SELECT 1
FROM TABLE_1 T3
WHERE T1.Field3 = T3.Field3
GROUP
BY T3.Field3
HAVING COUNT(1) > 1
)