I\'d like to generate a list of dates with the hopes of joining with another table, but I don\'t know what syntax to use, something similar to this:
SELECT dates
Use the generate_series function to get a list of numbers that you can add to a date in order to get a list of dates:
SELECT CURRENT_DATE + s.a AS dates
FROM generate_series(0,14,7) as s(a);
Result:
dates
------------
2004-02-05
2004-02-12
2004-02-19
The latter part of your question deals with pivoting the result set -- converting row data into columnar data. PIVOT and UNPIVOT are ANSI, but I don't see them as supported by PostgreSQL currently. The most consistently supported means of pivoting a query is to use aggregate functions:
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
...means dynamic SQL.