Postgresql
如何在 postgresSQL 中將單列轉換為多行條目
我有一個如下所示的表格。
CREATE TABLE tbl (sl_no int, username text, petname1 text, petname2 text); INSERT INTO tbl VALUES (1, 'A', 'XYZ', 'ABC') , (2, 'B', 'RTS', 'DEF') , (3, 'C', 'QWE', 'GHI') , (4, 'D', 'HGD', 'JKL') ;
如何將單列轉換為多行條目?進入這個結果:
1, 'A', 'XYZ' 1, 'A', 'ABC' 2, 'B', 'RTS' 2, 'B', 'DEF' 3, 'C', 'QWE' 3, 'C', 'GHI' 4, 'D', 'HGD' 4, 'D', 'JKL'
如果可能,使用 postgresql 11.3
select * from ( select sl_no, username, petname1 from tbl union all select sl_no, username, petname2 from tbl ) t order by 1
您可以使用 unpivot執行此操作**而無需再次查詢表。**最簡單的方法是使用
CROSS JOIN LATERAL (VALUES
SELECT t.sl_no, t.username, v.petname FROM tbl t CROSS JOIN LATERAL (VALUES (petname1), (petname2) ) v(petname);