从同一列中减去数据

时间:2012-07-17 18:58:05

标签: sql-server

我在从同一列中减去数据时遇到困难。我的数据结构如下所示:

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 个答案:

答案 0 :(得分:5)

select max(gallons) - min(gallons)
from table1 
group by Date
having Date = '2012-07-01'

答案 1 :(得分:2)

select max(gallons) - min(gallons)
from table1 t1
where date between '2012-01-01' and '2012-01-31'

答案 2 :(得分:0)

SELECT MAX(gallons) - MIN(gallons) AS 'GallonsUsed'
FROM table;

可以在这种情况下工作,如果你正在做月度报告,这可能会有效。加仑的价值从未如何增加?当你用完时会发生什么?

答案 3 :(得分: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匹配。或者,在您的情况下,不同的日期。