PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problemy z tabelą krzyżową/pivotem w PostgreSQL

Przypadek testowy (preferowany sposób dostarczenia przykładowych danych):

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

Zapytanie:

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

Zwraca dokładnie wynik przedstawiony w pytaniu. Jeśli PagerNumber może być czymś innym niż prawidłowym bigint numer, użyj text zamiast tego.

Odpowiedź, do której odnosisz się w swoim pytaniu, była nieaktualna i nigdy nie była prawidłowa. Dodałem prawidłową odpowiedź z wyjaśnieniem i linkami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. funkcja zwraca wiele kolumn jako pojedynczą kolumnę zamiast wielu kolumn

  2. Jak mogę się zalogować i uwierzytelnić w Postgresql po nowej instalacji?

  3. Jak mogę użyć indeksu na partycjonowanej tabeli w postgresql 8.3.7

  4. Jak przekazać NEW.* do EXECUTE w funkcji wyzwalania?

  5. Usuń zduplikowane wiersze z tabeli bez unikalnego klucza