我在雪花中有一張如下表:

我想要做的是將 B 列和 C 列拆分為新行,以便每條記錄都是獨立的。像這樣:

我已經嘗試使用下面的方法,不幸的是,我將B中的每條記錄附加到C中的每條記錄上,這很接近解決方案。雖然我想讓它們保持獨立,所以 2 = 樹,然后 3 = 金屬等等。
這是我目前的方法和結果:
SELECT A, Y.VALUE, Z.VALUE
FROM TEST,
LATERAL split_to_table(B, ',')Y,
LATERAL split_to_table(C, ',')Z;

uj5u.com熱心網友回復:
您可以在 CTE 中的單獨表運算式中將它們展平,并將它們連接到序列和索引上:
create or replace transient table T1 (A string, B string, C string);
insert into T1 (A, B, C) values
('Red', '2,3,4','Tree,Metal,House'),
('Green', '5,9,10','Building,Branch,Hose'),
('Blue','10,11,12,14','Roof,Tile,Van,Car')
;
with B as
(
select A, SEQ, INDEX, VALUE as B from T1, table(split_to_table(B, ','))
), C as
(
select SEQ, INDEX, VALUE as C from T1, table(split_to_table(C, ','))
)
select A, B, C from B left join C on B.SEQ = C.SEQ and B.INDEX = C.INDEX;
| 一個 | 乙 | C |
|---|---|---|
| 紅色的 | 2 | 樹 |
| 紅色的 | 3 | 金屬 |
| 紅色的 | 4 | 房子 |
| 綠色的 | 5 | 建造 |
| 綠色的 | 9 | 分支 |
| 綠色的 | 10 | 軟管 |
| 藍色的 | 10 | 屋頂 |
| 藍色的 | 11 | 瓦 |
| 藍色的 | 12 | 范 |
| 藍色的 | 14 | 車 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517063.html
上一篇:將具有不同列值的多行合并為一行
