2012-07-17 90 views
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。 「加侖」的值將始終降低

+0

你錯過了這一點的其他部分。你沒有在任何地方指定它應該比較的其他價值。 – 2012-07-17 19:03:26

回答

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

爲什麼在'有'的日期?爲什麼是7月1日? – 2012-07-17 19:13:34

+0

我運行此查詢時遇到此錯誤 列'dbo.ADS_Device_Data.Device_Data_ID'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – 2016-09-20 14:11:44

+0

發佈一個問題詳情@faisal – Rab 2016-09-21 18:25:14

2

嘗試

select max(gallons) - min(gallons) 
from table1 t1 
where date between '2012-01-01' and '2012-01-31' 
0
SELECT MAX(gallons) - MIN(gallons) AS 'GallonsUsed' 
FROM table; 

在這種情況下將工作,如果你正在做月度報告這可能是工作。加侖的價值如何不增加?當你用完時會發生什麼?

+0

感謝您的輸入。你說得對,我剛纔提到,爲了解決這個問題,排除了這個事件的可能性。 – Rick 2012-07-17 19:15:42

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匹配。或者,就像你的情況一樣,不同的日期。