Eu tenho uma tabela mostrada abaixo.
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')
;
Como faço para converter uma única coluna em várias entradas de linha? neste resultado:
1, 'A', 'XYZ'
1, 'A', 'ABC'
2, 'B', 'RTS'
2, 'B', 'DEF'
3, 'C', 'QWE'
3, 'C', 'GHI'
4, 'D', 'HGD'
4, 'D', 'JKL'
usando postgresql 11.3 se possível
Você pode fazer isso sem consultar a tabela uma segunda vez, usando um unpivot. A maneira mais fácil de fazer isso é com
CROSS JOIN LATERAL (VALUES
dotnetfiddle