-2

我在 MySQL 中有一个标题为“报告”的表,其中有一列标题为“Flow_Total”,它的运行总值每天都在上升并且从不重置,我需要的是一个查询,它获取存储在“Flow_Total”中的值" 列并按月划分,然后告诉我每个月价值上涨多少。

这就是我希望查看数据的方式:

https://skydrive.live.com/redir?resid=BC22A6E2F92CE833!11843&authkey=!ACgipFLKDJTBlN8

该月的值写入该月的最后一天。我想要做的总结是从 Flow_Total 中减去每月的变化,并将其显示在名为每月总计的单独列中。

4

1 回答 1

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;

一个用于测试的 SQLfiddle

于 2013-03-11T20:43:55.557 回答