Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT
- cdr.datefield AS 'date',
- a.id AS 'id',
- a.name AS 'name',
- SUM(t.debit_amount - t.credit_amount) AS 'balance'
- FROM calendar cdr
- JOIN transactions t ON (cdr.datefield >= t.value_date)
- JOIN accounts a ON (a.id = t.account_id)
- WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
- GROUP BY cdr.datefield, a.id
- ORDER BY a.id ASC
- transactions:
- 123, 2012-01-01, 10000, 100, 0
- 124, 2012-01-01, 30000, 100, 0
- 125, 2013-01-01, 20000, 200, 0
- 126, 2014-01-01, 20000, 0, 100
- 127, 2014-01-01, 10000, 0, 200
- date id name balance
- -----------------------------------------------
- 2014-03-31 10000 Cash -200
- 2014-03-31 20000 Payables -100
- 2014-03-31 30000 Issued Capital 0
- 2013-03-31 10000 Cash 0
- 2013-03-31 20000 Payables 200
- 2013-03-31 30000 Issued Capital 0
- 2012-03-31 10000 Cash 100
- 2012-03-31 20000 Payables 0
- 2012-03-31 30000 Issued Capital 100
- calendar:
- datefield (date)
- transactions:
- id (int), value_date (date), account_id, debit_amount (decimal), credit_amount (decimal)
- accounts:
- id (int), name (varchar), description (varchar)
- GROUP BY YEAR(cdr.datefield), MONTH(cdr.datefield), a.id
- GROUP BY YEAR(cdr.datefield), a.id
- GROUP BY YEAR(t.value_date), MONTH(t.value_date), a.id
- GROUP BY YEAR(t.value_date), a.id
- SELECT
- cdr.datefield AS 'date',
- a.id AS 'id',
- SUM(t.debit_amount - t.credit_amount) AS 'balance'
- FROM calendar cdr
- JOIN transactions t ON (cdr.datefield >= t.value_date)
- JOIN accounts a ON (a.id = t.account_id)
- WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
- GROUP BY cdr.datefield, a.id
- WITH ROLLUP;
- SELECT
- BB.date,AA.id,AA.name,IFNULL(BB.balance,0) balance
- FROM accounts AA LEFT JOIN
- (SELECT
- cdr.datefield AS 'date',
- a.id AS 'id',
- SUM(t.debit_amount - t.credit_amount) AS 'balance'
- FROM calendar cdr
- JOIN transactions t ON (cdr.datefield >= t.value_date)
- JOIN accounts a ON (a.id = t.account_id)
- WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
- GROUP BY cdr.datefield, a.id
- WITH ROLLUP) BB USING (id) WHERE AA.date IS NOT NULL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement