我有以下数据集
color_code fav_color_code color_code_name fav_color_name
1|2 5 blue|white black
3|4 7|9 green|red pink|yellow
我需要把color_code的第一个值加入color_code_name的第一个值,把color_code的第二个值加入color_code_name的第二个值等等。
code color
1 blue
2 white
5 black
3 green
4 red
7 pink
9 yellow
我正在使用下面的代码,但它正在做交叉连接,因为我没有id来连接。如果我映射2列,但不是多列,这段代码可以工作。有人能帮助我得到预期的结果吗?
SELECT
t1.code AS code,
t2.color AS color,
FROM
(
SELECT
c.value :: varchar AS code,
row_number() over(
order by
code
) AS rownum
FROM
table,
lateral flatten (
input => split(color_code, '|')
) c
UNION
SELECT
d.value :: varchar AS code,
row_number() OVER(
ORDER BY
code
) AS rownum
FROM
table,
lateral flatten (
input => split(fav_color_code, '|')
) d
) t1
JOIN (
SELECT
f.value :: varchar AS color,
row_number() OVER(
ORDER BY
color
) AS rownum
FROM
table,
lateral flatten (
input => split(color_code_name, '|')
) f
UNION
SELECT
g.value :: varchar AS color,
row_number() OVER(
ORDER BY
color
) AS rownum
FROM
table,
lateral flatten (
input => split(fav_color_name, '|')
) g
) t2 ON (t1.rownum = t2.rownum)
ORDER BY
t1.color
非常感谢