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 日的加仑值)。

附言。“加仑”的价值总是会减少

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

你要的东西是最后一行。在我们将表内部连接到自身之后,我们只需请求将两行与某些 id 匹配。或者,就像你的情况一样,不同的日期。

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

在这种情况下会起作用,如果您正在做月度报告,这可能会起作用。加仑的价值如何永远不会增加?当你用完时会发生什么?

于 2012-07-17T19:05:25.430 回答