我在MySQL中有一个名为“Reports”的表,其中有一个标题为“Flow_Total”的列,其运行总值每天都在上升而且从不重置,我需要的是一个查询,它采用存储的值“Flow_Total”列,按月划分,告诉我每个月价值上涨多少。
这就是我想看到数据的方式:
https://skydrive.live.com/redir?resid=BC22A6E2F92CE833!11843&authkey=!ACgipFLKDJTBlN8
月份的值写在该月的最后一天。 我想要做的总结是从Flow_Total中减去每月更改,并将其显示在标题为“每月总计”的单独列中。
答案 0 :(得分:1)
可能不是最令人愉悦的SQL,但这应该是你所要求的;它只是自己加入桌子,自己延迟了1个月,并计算出与之相比的差异。
SELECT DATE_FORMAT(MAX(a.`DATE`), '%b-%y') `DATE`,
MAX(a.`FLOW_TOTAL`) `Flow Total`,
(MAX(a.`FLOW_TOTAL`) - MAX(b.`FLOW_TOTAL`)) `Monthly Total`
FROM Reports a
LEFT JOIN Reports b
ON YEAR(a.`DATE`) = YEAR(DATE_ADD(b.`DATE`, INTERVAL 1 MONTH)) AND
MONTH(a.`DATE`) = MONTH(DATE_ADD(b.`DATE`, INTERVAL 1 MONTH))
GROUP BY YEAR(a.`DATE`), MONTH(a.`DATE`)
ORDER BY a.`DATE` DESC;