【问题标题】:Find record with TAG LIST column duplicated查找标签列表列重复的记录
【发布时间】:2021-05-05 09:14:53
【问题描述】:

我有一张这样的桌子

KEY TAGS
001 A B C
002 D E
003 B C A

VALUES 列包含标签列表,标签之间有空格。

我想找到所有具有重复值的键,而不是取决于它们的顺序。

在我的示例中,如何找到 KEY 001 和 003?

【问题讨论】:

    标签: sql db2-400


    【解决方案1】:

    您可以使用SPLITLISTAGG 来订购标签

    WITH input_datas (key, tags) AS (
        VALUES
        ('001', 'A B C'),
        ('002', 'D E'),
        ('003', 'B C A')
    ),
    key_tags AS (
        SELECT
            key, ELEMENT AS tag
        FROM
            input_datas
            CROSS JOIN TABLE (SYSTOOLS.SPLIT(tags, ' ')) AS tags
    ),
    ordered_tags AS (
        SELECT
            key, LISTAGG(DISTINCT tag, ' ') WITHIN GROUP (ORDER BY tag) tags
        FROM key_tags
        GROUP BY key
    )
    SELECT * FROM ordered_tags WHERE tags IN (SELECT tags FROM ordered_tags GROUP BY tags HAVING count(1) > 1)
    

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2022-01-10
      • 2021-07-22
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      相关资源
      最近更新 更多