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

Użyj wartości wierszy jako kolumn w PostgreSQL

crosstab() zapytanie dla twojego przykładu wyglądałoby tak:

Aby wypełnić 0 dla wynikowego NULL wartości (prośba w komentarzu), użyj COALESCE() :

SELECT brand_id
     , COALESCE(jan, 0) AS "Jan-2012"
     , COALESCE(feb, 0) AS "Feb-2012"
     , COALESCE(mar, 0) AS "Mar-2012"
     , COALESCE(apr, 0) AS "Apr-2012"
FROM crosstab(
       'SELECT brand_id, month, total
        FROM   brands
        ORDER  BY 1'

       ,$$VALUES ('Jan-2012'::text), ('Feb-2012'), ('Mar-2012'), ('Apr-2012')$$
 ) AS ct (
   brand_id int
 , jan numeric    -- use actual data type!
 , feb numeric
 , mar numeric
 , apr numeric);

Szczegółowe wyjaśnienie i linki w tej powiązanej odpowiedzi:
PostgreSQL Crosstab Zapytanie

Poza tym:nie używaj zastrzeżonego słowa „data” jako nazwy kolumny i nie powinieneś też tego robić, nawet jeśli Postgres na to pozwala.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zainstaluj pakiety z docker-compose.yml do kontenera docker

  2. Błąd protokołu PostgreSQL. Konfiguracja sesji nie powiodła się.. błąd

  3. Jak napisać sprzężenie z tymi nietypowymi kryteriami dopasowania?

  4. Django. PostgreSQL. regexp_split_to_table nie działa

  5. Połączenie lewostronne w Postgresie nie zwraca wartości dla wartości Null