-1

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) を選択します

それだけでした!

4

1 に答える 1