查找 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?
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)
我有一个table这样的
KEY | TAGS |
---|---|
001 | A B C |
002 | D E |
003 | B C A |
VALUES 列包含标签之间有空格的 TAG 列表。
我想找到所有具有重复值的键,而不是依赖于它们的顺序。
在我的示例中,如何找到 KEY 001 和 003?
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)