Kasus uji (cara yang lebih disukai untuk memberikan data sampel):
CREATE TEMP TABLE prefs (pref_id int, pref_name text, pref_value text);
INSERT INTO prefs VALUES
(1, 'PagerNumber' , '2125551234')
,(2, 'PagerCarrier', '@att.com')
,(3, 'PagerCarrier', '@something.com');
Pertanyaan:
SELECT *
FROM crosstab(
'SELECT pref_id, pref_name, pref_value
FROM prefs
ORDER BY 1, 2',
$$VALUES ('PagerNumber'::text), ('PagerCarrier')$$
)
AS x (section text, pager_number bigint, pager_carrier text);
Mengembalikan persis hasil yang digambarkan dalam pertanyaan Anda. Jika PagerNumber
bisa menjadi sesuatu selain bigint
yang valid nomor, gunakan text
sebagai gantinya.
Jawaban yang Anda maksudkan dalam pertanyaan Anda sudah usang dan tidak pernah benar sejak awal. Saya menambahkan jawaban yang tepat dengan penjelasan dan tautan di sana.