PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để bao gồm các giá trị null trong truy vấn `tablefunc` trong postgresql?

Sử dụng crosstab() biến thể có hai tham số :

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

Từ đó khai báo rõ ràng giá trị nào đi ở cột đầu ra nào. Vì vậy, hàm biết nơi để điền vào NULL các giá trị. Trong trường hợp này generate_series() có ích khi cung cấp 8 hàng với các số từ 1-8. VALUES biểu thức sẽ là một thay thế:

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

Ngoài ra, đừng quên ORDER BY trong truy vấn tham số đầu tiên.

Tôi đã cung cấp một giải thích chi tiết trong câu trả lời có liên quan này .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cập nhật nhiều cột trong PostgreSQL

  2. 'Không thể tìm thấy pg-0.12.2 trong bất kỳ nguồn nào' khi chạy rspec

  3. Cách chuyển NEW. * Để THỰC HIỆN trong chức năng kích hoạt

  4. Làm cách nào để kết hợp nhiều hàng thành một cột bằng PostgreSQL?

  5. Làm cách nào để chia kết quả truy vấn thành các cột riêng biệt?