Тестов случай (предпочитан начин за предоставяне на примерни данни):
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');
Заявка:
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);
Връща точно резултата, изобразен във вашия въпрос. Ако PagerNumber
може да бъде нещо различно от валиден bigint
номер, използвайте text
вместо това.
Отговорът, който имате предвид във вашия въпрос, беше остарял и никога не беше правилен. Добавих правилен отговор с обяснение и връзки там.