テストケース(サンプルデータを提供するための推奨される方法):
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
を使用 代わりに。
あなたがあなたの質問で言及している答えは時代遅れであり、そもそも決して正しくありませんでした。 適切な回答と説明とリンクを追加しました。