Danh sách ngày
Sử dụng hàm create_series để có được danh sách các số mà bạn có thể thêm vào một ngày để có được danh sách các ngày:
SELECT CURRENT_DATE + s.a AS dates
FROM generate_series(0,14,7) as s(a);
Kết quả:
dates
------------
2004-02-05
2004-02-12
2004-02-19
Xoay vòng
Phần sau của câu hỏi của bạn liên quan đến việc xoay tập hợp kết quả - chuyển đổi dữ liệu hàng thành dữ liệu cột. PIVOT và UNPIVOT là ANSI, nhưng tôi không thấy chúng là được hỗ trợ bởi PostgreSQL hiện tại . Phương tiện được hỗ trợ nhất quán nhất để xoay vòng một truy vấn là sử dụng các hàm tổng hợp:
SELECT t.account,
SUM(CASE WHEN t.date = '2010-01-01' THEN t.amount END) AS '2010-01-01',
SUM(CASE WHEN t.date = '2010-01-02' THEN t.amount END) AS '2010-01-02',
SUM(CASE WHEN t.date = '2010-01-03' THEN t.amount END) AS '2010-01-03',
SUM(t.amount) AS Balance
FROM (SELECT CURRENT_DATE + s.a AS dates
FROM generate_series(0,14,7) as s(a)) x
LEFT JOIN TRANSACTIONS y ON y.date = x.date
GROUP BY t.account
Cột động
... có nghĩa là SQL động .