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

Sử dụng giá trị hàng làm cột trong PostgreSQL

crosstab() truy vấn cho ví dụ của bạn sẽ giống như sau:

Để điền vào 0 cho kết quả NULL giá trị (yêu cầu trong nhận xét), sử dụng COALESCE() :

SELECT brand_id
     , COALESCE(jan, 0) AS "Jan-2012"
     , COALESCE(feb, 0) AS "Feb-2012"
     , COALESCE(mar, 0) AS "Mar-2012"
     , COALESCE(apr, 0) AS "Apr-2012"
FROM crosstab(
       'SELECT brand_id, month, total
        FROM   brands
        ORDER  BY 1'

       ,$$VALUES ('Jan-2012'::text), ('Feb-2012'), ('Mar-2012'), ('Apr-2012')$$
 ) AS ct (
   brand_id int
 , jan numeric    -- use actual data type!
 , feb numeric
 , mar numeric
 , apr numeric);

Giải thích chi tiết và các liên kết trong câu trả lời có liên quan này:
PostgreSQL Crosstab Truy vấn

Ngoài ra:không sử dụng từ dành riêng "ngày" làm tên cột và bạn cũng không nên, ngay cả khi Postgres cho phép.




  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ác hàm với số lượng tham số đầu vào thay đổi

  2. Chuyển đổi các truy vấn SELECT DISTINCT ON từ Postgresql sang MySQL

  3. Gán tổng giá trị của tháng cho từng ngày trong tháng

  4. SQL hai tiêu chí từ một nhóm

  5. Làm cách nào để chọn giá trị trước đó một cách hiệu quả?