टेस्ट केस (नमूना डेटा प्रदान करने का पसंदीदा तरीका):
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
का उपयोग करें इसके बजाय।
आप अपने प्रश्न में जिस उत्तर का उल्लेख कर रहे हैं वह पुराना था और शुरू करने के लिए कभी भी सही नहीं था। मैंने एक उचित उत्तर जोड़ा जिसमें स्पष्टीकरण और लिंक शामिल हैं।