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

Brug rækkeværdier som kolonner i PostgreSQL

En crosstab() forespørgsel til dit eksempel ville se sådan ud:

For at udfylde 0 for resulterende NULL værdier (anmodning i kommentar), brug 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);

Detaljeret forklaring og links i dette relaterede svar:
PostgreSQL krydstabel Forespørgsel

Bortset fra:Bruger ikke det reserverede ord "dato" som kolonnenavn, og det skal du heller ikke, selvom Postgres tillader det.




  1. Nøgleindikatorer for problemdesign

  2. Hvordan viser man værdien af ​​en variabel på kommandolinjen i MySQL?

  3. MySQL Connector ODBC odbc.ini 'Option' flag værdier

  4. MySQL Understanding Basic Joins