查找 TAG LIST 列重复的记录

Find record with TAG LIST column duplicated

我有一个table这样的

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

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

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

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

您可以使用SPLIT and LISTAGG来订购标签

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)