TestTable という名前の次の SQL テーブルを使用しているとします。
Date Value1 Value2 Value3 ... Name
2013/01/01 1 4 7 Name1
2013/01/14 6 10 8 Name1
2013/02/23 10 32 9 Name1
そして、次のように、日付間の値の増分を取得したいと思います:
Value1Inc Value2Inc Value3Inc Name
4 22 1 Name1
2013/02/23
との間2013/01/14
。
値は常に増加することに注意してください。StackOverflow にある次のアプローチを試しています。
select (
(select value1 from TestTable where date < '2013/01/14') -
(select value1 from TestTable where date < '2013/02/23')
) as Value1Inc,
(select value2 from TestTable where date < '2013/01/14') -
(select value2 from TestTable where date < '2013/02/23')
as Value2Inc
...
などですが、このアプローチでは膨大なクエリが発生します。
クエリを簡素化するために MAX および MIN SQL 関数を使用したいのですが、SQL マスターではないため (少なくともまだ :-)、正確な方法がわかりません。
ここで手を貸してくれませんか?
編集:アップ、次のようにクエリの最後に「GROUP BY Name」を追加することで、自分で解決策を見つけたと思います。
日付 < '2013-02-23' および日付 > '2013-01-01' GROUP BY Name の TestTable から name,max(value1) - min(value1) を選択します
それだけでした!