日付のリスト
generate_series関数 を使用します 日付のリストを取得するために日付に追加できる番号のリストを取得するには:
SELECT CURRENT_DATE + s.a AS dates
FROM generate_series(0,14,7) as s(a);
結果:
dates
------------
2004-02-05
2004-02-12
2004-02-19
ピボット
質問の後半では、結果セットのピボット、つまり行データを列データに変換する方法について説明します。 PIVOTとUNPIVOTはANSIですが、PostgreSQLでサポートされているとは見なされません。現在 。クエリをピボットするために最も一貫してサポートされている手段は、集計関数を使用することです。
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
動的列
...は