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

Jak uwzględnić wartości null w zapytaniu `tablefunc` w postgresql?

Użyj crosstab() wariant z dwoma parametrami :

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

W ten sposób deklarujemy jawnie, która wartość trafia do której kolumny wyjściowej. Dzięki temu funkcja wie, gdzie wypełnić NULL wartości. W tym przypadku generate_series() przydaje się podanie 8 wierszy z liczbami 1-8. VALUES wyrażenie byłoby alternatywą:

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

Nie zapomnij również o ORDER BY klauzula w pierwszym zapytaniu parametrycznym.

Podałem szczegółowe wyjaśnienie w tej powiązanej odpowiedzi .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd NodeJS Postgres getaddrinfo ENOFOUND

  2. Jak utworzyć użytkownika tylko do odczytu w PostgreSQL

  3. Konwersja ciągu szesnastkowego na liczby całkowite w Amazon Redshift

  4. TypeError:obiekt „int” nie obsługuje indeksowania

  5. Czy można odbudować pg_depend?