我有一个如下所示的表格。
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
您可以使用 unpivot执行此操作而无需再次查询表。最简单的方法是使用
CROSS JOIN LATERAL (VALUES
dotnetfiddle