0

同じ列からデータを減算するのに問題があります。私のデータ構造は次のようになります。

TimeStamp  ID  state  Gallons
1/01/2012   1    NY     100
1/05/2012   1    NY      90
1/10/2012   1    NY      70
1/15/2012   1    NY      40

したがって、その期間に使用された(100-40)=60ガロンの結果を取得したいと思います。次のクエリを使用してみました。

SELECT T1.Gallons, T1.Gallons -T1.Gallons AS 'Gallons used'
FROM Table 1 AS T1 
where Date = '2012-07-01'
ORDER BY Gallons

これを行う簡単な方法のようです。ただし、正しい値を取得する方法としてタイムスタンプを含める効率的な方法を見つけることができません(例:2012年1月1日のガロン値-2012年1月30日のガロン値)。

ps。「ガロン」の値は常に減少します

4

4 に答える 4

5
select max(gallons) - min(gallons)
from table1 
group by Date
having Date = '2012-07-01'
于 2012-07-17T19:04:11.077 に答える
2

試す

select max(gallons) - min(gallons)
from table1 t1
where date between '2012-01-01' and '2012-01-31'
于 2012-07-17T19:01:50.110 に答える
0

常に最大量と最小量を比較しますか?そうでない場合は、次のようなもので十分ですか(一般的なサンプル)?初めてスクリプトを実行するとエラーが発生しますが、無視してかまいません。

drop table TableName
create table TableName (id int, value int)

insert into TableName values (3, 20)
insert into TableName values (4, 17)
insert into TableName values (5, 16)
insert into TableName values (6, 12)
insert into TableName values (7, 10)

select t1.value - t2.value
from TableName as t1 inner join TableName as t2 
  on t1.id = 5 and t2.id = 6

あなたが求めているのは最後の行です。テーブルをそれ自体に内部結合した後、2つの行を特定のIDと一致させるように要求するだけです。または、あなたの場合のように、異なる日付。

于 2012-07-17T19:27:11.853 に答える
0
SELECT MAX(gallons) - MIN(gallons) AS 'GallonsUsed'
FROM table;

この場合は機能しますが、月次レポートを実行している場合は機能する可能性があります。ガロンの価値はどうして決して増加しないのですか?なくなるとどうなりますか?

于 2012-07-17T19:05:25.430 に答える