-2

MySQL に「Reports」というタイトルのテーブルがあり、「Flow_Total」というタイトルの列があり、毎日上昇し、リセットされることのない現在の合計値があります。必要なのは、「Flow_Total」に格納されている値を取得するクエリです。 」列に移動して月ごとに分割すると、毎月値がどれだけ上昇するかがわかります。

これは私がデータを見たい方法です:

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

その月の値は、その月の最終日に書き込まれます。私がやりたいことの要約は、Flow_Total から毎月の変化を差し引いて、Monthly 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 に答える