sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur inkluderar man nollvärden i `tablefunc`-frågan i postgresql?

Använd crosstab() variant med två parametrar :

SELECT * FROM crosstab(
   'SELECT zone_id, group_id, area
    FROM   ct
    ORDER  BY 1,2'

   ,'SELECT g FROM generate_series(1,8) g'  -- ! Provide values explicitly
   )
AS ct(
     row_name integer
   , g_1 float8, g_2 float8
   , g_3 float8, g_4 float8
   , g_5 float8, g_6 float8
   , g_7 float8, g_8 float8);

Deklarerar därigenom uttryckligen vilket värde som går i vilken utdatakolumn. Så funktionen vet var den ska fylla i NULL värden. I det här fallet generate_series() är praktiskt att ge 8 rader med siffrorna 1-8. En VALUES uttryck skulle vara ett alternativ:

'VALUES (1), (2), (3), (4), (5), (6), (7), (8)'

Glöm inte heller ORDER BY sats i den första parameterfrågan.

Jag gav en detaljerad förklaring i det här relaterade svaret .



  1. Lägg till valutatecken £, $ i vissa fält ORACLE

  2. Kan jag starta en trigger på select-satsen i mysql?

  3. Korrekt sätt att lagra data i SQL-databas när kolumner är okända

  4. mysql datum och tid format med c#