db2 SQL,用于标识在特定列中具有特定值的重复项的所有记录

bqf10yzr  于 2022-12-04  发布在  DB2
关注(0)|答案(2)|浏览(132)

我们在DB2中有一些类似的数据,如下所示:
| GUID标识符|识别码|关键字|子机码|
| - -|- -|- -|- -|
| ABC-123-脱氧葡萄糖|小行星1234567|二十个|一个|
| ABC-123-脱氧葡萄糖|小行星1234567|二十二个|一个|
| ABC-123-脱氧葡萄糖|小行星1234567|二十一个|2个|
| ABC-123-脱氧葡萄糖|小行星1234568|二十二个|一个|
| ABC-124-脱氧葡萄糖|小行星1234667|二十一个|2个|
| ABC-124-脱氧葡萄糖|小行星1234668|二十二个|2个|
| ABC-125-脱氧葡萄糖|小行星1234767|二十一个|一个|
| ABC-125-脱氧葡萄糖|小行星1234768|二十二个|一个|
我希望仅在子项条件为1重复多次的情况下输出所有详细信息,如下所示
| GUID标识符|识别码|关键字|子机码|
| - -|- -|- -|- -|
| ABC-123-脱氧葡萄糖|小行星1234567|二十个|一个|
| ABC-123-脱氧葡萄糖|小行星1234567|二十二个|一个|
| ABC-123-脱氧葡萄糖|小行星1234567|二十一个|2个|
| ABC-123-脱氧葡萄糖|小行星1234568|二十二个|一个|
| ABC-125-脱氧葡萄糖|小行星1234767|二十一个|一个|
| ABC-125-脱氧葡萄糖|小行星1234768|二十二个|一个|
感谢您的帮助!

f4t66c6m

f4t66c6m1#

选择要分组的列。
假设它是GUID列。

SELECT GUID
FROM THE_TABLE
WHERE SUBKEY = 1
GROUP BY GUID
HAVING COUNT(SUBKEY) > 1
6ojccjat

6ojccjat2#

可以将SUM(..) OVER (PARTITION BY .. )的窗口聚合组子句与条件语句沿着如

SELECT GUID, ID, Key, SubKey
  FROM ( SELECT t.*,
                SUM(CASE WHEN SubKey = 1 THEN 1 END) OVER (PARTITION BY GUID) AS cnt
           FROM t ) tt
 WHERE cnt > 1

Demo

相关问题