PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да включите нулеви стойности в заявка `tablefunc` в postgresql?

Използвайте crosstab() вариант сдва параметъра :

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

По този начин се декларира изрично коя стойност отива в коя изходна колона. Така че функцията знае къде да попълни NULL стойности. В този случай generate_series() е полезен за осигуряване на 8 реда с числата 1-8. A VALUES израз би бил алтернатива:

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

Освен това не забравяйте ORDER BY клауза в първата параметърна заявка.

Предоставих подробно обяснение в този свързан отговор .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да посочите ApplicationName в низ за свързване на NpgSql

  2. Rails недефиниран метод за ActiveRecord_Associations_CollectionProxy

  3. Подходящ ли е PHP, Python, PostgreSQL дизайн за бизнес приложение?

  4. Прозоречна функция на PostgreSQL:row_number() над (col подреждане на дяла по col2)

  5. Как да изберете повторяемо произволно число с setseed в postgres sql?