sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-kruistabel/pivot-problemen

Testcase (voorkeursmanier om voorbeeldgegevens aan te leveren):

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');

Vraag:

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);

Retourneert precies het resultaat dat in uw vraag wordt weergegeven. Als een PagerNumber kan iets anders zijn dan een geldige bigint nummer, gebruik text in plaats daarvan.

Het antwoord waarnaar u verwijst in uw vraag was verouderd en nooit correct om mee te beginnen. Ik heb een juist antwoord met uitleg en links daar toegevoegd.



  1. Hoe vind je rijen>kolommencombinaties met Cross Join? [SQL]

  2. Hoe schrijf ik een Oracle Insert-script met één veld als CLOB?

  3. Datumverschil ophalen

  4. Queryresultaten retourneren als een door komma's gescheiden lijst in Oracle