sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL křížové/pivotní problémy

Testovací případ (preferovaný způsob poskytování ukázkových dat):

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

Dotaz:

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

Vrátí přesně výsledek zobrazený ve vaší otázce. Pokud PagerNumber může být něco jiného než platný bigint číslo, použijte text místo toho.

Odpověď, na kterou odkazujete ve své otázce, byla zastaralá a nikdy nebyla správná. Přidal jsem správnou odpověď s vysvětlením a odkazy.



  1. Chyba MySQL:Sloupec 'název sloupce' nemůže být součástí FULLTEXTOVÉHO indexu

  2. Relační databáze

  3. Proč hibernace generuje předponu 'T_' název_tabulky během operace vkládání a mazání?

  4. Ukládání ID jako hodnot oddělených čárkou