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

Hvordan inkludere null-værdier i `tablefunc`-forespørgsel i postgresql?

Brug crosstab() variant med to parametre :

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

Derved erklæres eksplicit, hvilken værdi der går i hvilken outputkolonne. Så funktionen ved, hvor den skal udfylde NULL værdier. I dette tilfælde generate_series() er praktisk at give 8 rækker med tallene 1-8. En VALUES udtryk ville være et alternativ:

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

Glem heller ikke ORDER BY klausul i den første parameterforespørgsel.

Jeg har givet en detaljeret forklaring i dette relaterede svar .



  1. Hurtigste måde at indlæse numeriske data i python/pandas/numpy array fra MySQL

  2. vb.net-forespørgsel for at vise specifikke rækker af datatabel [grundlæggende]

  3. SQL Server:XPATH-forespørgsel mislykkedes

  4. Udløs valg af underordnede poster, multiplicering af deres værdier og opdatering af overordnet post