0

这是在 DB2 中。我想编写查询,该查询会导致一个指定列中的值是 DISTINCT 但第二列中的值也不是不同的行。

这是一个示例数据集:

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 的初学者

4

2 回答 2

1

窗口函数是一种方法:

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;
于 2019-07-19T15:49:54.360 回答
0

如果由于某种原因您不想使用窗口函数。

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
         )
于 2019-07-19T16:50:57.640 回答