sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL korstabell/pivotproblem

Testfall (föredraget sätt att tillhandahålla exempeldata):

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

Fråga:

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

Returnerar exakt det resultat som visas i din fråga. Om ett PagerNumber kan vara något annat än en giltig bigint nummer, använd text istället.

Svaret du hänvisar till i din fråga var föråldrat och aldrig korrekt till att börja med. Jag lade till ett riktigt svar med förklaring och länkar där borta.



  1. SELECT INTO OUTFILE behörighet nekad men användaren kan skriva till katalogen

  2. Köra migreringar med Rails i en Docker-container med flera containerinstanser

  3. Hur man ställer in schema i pg-promise

  4. Automatisk plankorrigering i SQL Server