2013-03-11 145 views
-2

我有一个标题为“Reports”的表中有一个标题为“Flow_Total”的列,该列的运行总值每天都在上升并且不会重置, need是一个查询,它将存储在“Flow_Total”列中的值按月分开,并告诉我每月的值有多大。用于计算每月总计超出运行总计的SQL查询

这是怎么了我想看到的数据:

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

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

+1

[你有什么尝试?](http://whathaveyoutried.com/) – rationalboss 2013-03-11 18:23:08

+0

你至少需要添加一些示例数据,表格布局和所需的结果。是否有每天或仅仅一个月的数据开始或结束?图像中的“Total Flow”列是月份开始或结束时的值?请澄清,并告诉我们您尝试过什么,哪些不起作用。 – 2013-03-11 18:29:27

+0

我还没有尝试过任何东西,我一直在过去一周搜索网页,并没有发现任何远程承诺。总流量列在每月月底记录。 – user2157980 2013-03-11 18:40:56

回答

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; 

An SQLfiddle for testing

+0

谢谢!那完美的工作! – user2157980 2013-03-11 21:31:07