sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL krydstabulator-/pivotproblemer

Testcase (foretrukken måde at levere eksempeldata på):

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

Forespørgsel:

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

Returnerer præcis det resultat, der er vist i dit spørgsmål. Hvis et PagerNumber kan være noget andet end en gyldig bigint nummer, brug text i stedet.

Det svar, du henviser til i dit spørgsmål, var forældet og aldrig korrekt til at begynde med. Jeg tilføjede et korrekt svar med forklaring og links derovre.



  1. Hvordan kan jeg oprette forbindelse til SQL Server fra en Mac med PHP PDO?

  2. Forespørgsel for at få samlede ordrer afgivet af en bestemt kunde i sidste år henter gentagne datoer, hvor der ikke eksisterer nogen ordre

  3. postgresql tidsstempel til std::chrono værdi

  4. Returner boolesk værdi fra oracle-funktion