Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. SELECT
  2. cdr.datefield AS 'date',
  3. a.id AS 'id',
  4. a.name AS 'name',
  5. SUM(t.debit_amount - t.credit_amount) AS 'balance'
  6. FROM calendar cdr
  7. JOIN transactions t ON (cdr.datefield >= t.value_date)
  8. JOIN accounts a ON (a.id = t.account_id)
  9. WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
  10. GROUP BY cdr.datefield, a.id
  11. ORDER BY a.id ASC
  12.  
  13. transactions:
  14. 123, 2012-01-01, 10000, 100, 0
  15. 124, 2012-01-01, 30000, 100, 0
  16. 125, 2013-01-01, 20000, 200, 0
  17. 126, 2014-01-01, 20000, 0, 100
  18. 127, 2014-01-01, 10000, 0, 200
  19.  
  20. date id name balance
  21. -----------------------------------------------
  22. 2014-03-31 10000 Cash -200
  23. 2014-03-31 20000 Payables -100
  24. 2014-03-31 30000 Issued Capital 0
  25.  
  26. 2013-03-31 10000 Cash 0
  27. 2013-03-31 20000 Payables 200
  28. 2013-03-31 30000 Issued Capital 0
  29.  
  30. 2012-03-31 10000 Cash 100
  31. 2012-03-31 20000 Payables 0
  32. 2012-03-31 30000 Issued Capital 100
  33.  
  34. calendar:
  35. datefield (date)
  36. transactions:
  37. id (int), value_date (date), account_id, debit_amount (decimal), credit_amount (decimal)
  38. accounts:
  39. id (int), name (varchar), description (varchar)
  40.  
  41. GROUP BY YEAR(cdr.datefield), MONTH(cdr.datefield), a.id
  42. GROUP BY YEAR(cdr.datefield), a.id
  43. GROUP BY YEAR(t.value_date), MONTH(t.value_date), a.id
  44. GROUP BY YEAR(t.value_date), a.id
  45.  
  46. SELECT
  47. cdr.datefield AS 'date',
  48. a.id AS 'id',
  49. SUM(t.debit_amount - t.credit_amount) AS 'balance'
  50. FROM calendar cdr
  51. JOIN transactions t ON (cdr.datefield >= t.value_date)
  52. JOIN accounts a ON (a.id = t.account_id)
  53. WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
  54. GROUP BY cdr.datefield, a.id
  55. WITH ROLLUP;
  56.  
  57. SELECT
  58. BB.date,AA.id,AA.name,IFNULL(BB.balance,0) balance
  59. FROM accounts AA LEFT JOIN
  60. (SELECT
  61. cdr.datefield AS 'date',
  62. a.id AS 'id',
  63. SUM(t.debit_amount - t.credit_amount) AS 'balance'
  64. FROM calendar cdr
  65. JOIN transactions t ON (cdr.datefield >= t.value_date)
  66. JOIN accounts a ON (a.id = t.account_id)
  67. WHERE cdr.datefield IN ('2014-03-31', '2013-03-31', '2012-03-31')
  68. GROUP BY cdr.datefield, a.id
  69. WITH ROLLUP) BB USING (id) WHERE AA.date IS NOT NULL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement