2012-08-09 91 views
0

Possible Duplicate:
Calculate a Running Total in SqlServerTSQL查詢「累計值」

我是SQL新手。這個問題似乎很基本,但我無法找到答案,也許我沒有達到正確的關鍵字。

在SQL Server 2008 R2我有這樣的一個表:

Date  Value 
--------------- 
2012-1-1 100 
2012-1-2  50 
2012-1-4 200 

我想創建一個視圖,累計值,是這樣的:

Date  Total 
--------------- 
2012-1-1 100 
2012-1-2 150 
2012-1-4 350 

我應該怎麼辦呢?

+2

@KenWhite,感謝您的信息,這正是我要找的。但請不要以爲我沒有嘗試搜索。作爲一個非英語的演講者和SQL的新手,我嘗試了我能想到的每一個詞,包括「彙總」,「累積」,「歷史總和」等。我想,自從我意識到這一點以後,我的問題本應該是真的「SQL世界中的[this thingy]的術語是什麼」。 – 2012-08-09 01:34:47

+1

你絕對正確 - 我不應該做出這種推定。我在標籤中看到了'運行總數',並且做出了假設(並且我們都知道這意味着什麼)。我很抱歉。 :-( – 2012-08-09 01:38:56

回答

2

這應該得到的運行總計。試試這個:

SELECT dateHere, 
     total, 
     total + COALESCE(
         (
          SELECT SUM(total) 
          FROM myTable b 
          WHERE b.dateHere < a.dateHere 
         ), 0) AS RunningTotal 
FROM  myTable a 
ORDER BY dateHere 

SQLFiddle Demo

+0

)我可以使用這個視圖定義嗎?我得到SQL執行錯誤:'ORDERBY'附近的語法不正確(我用「dbo.MyTable」替換了「myTable」) – 2012-08-09 03:09:31

+0

'ORDERBY'必須寫成兩個單獨的單詞' ORDER BY'。當然你可以創建一個視圖 – 2012-08-09 03:11:49

+0

你可以發佈你的新查詢嗎?一定要用你自己的columnNames改變列。 – 2012-08-09 03:13:50

1

下面是相關子查詢做到這一點的一種方法:

select t.date, t.value, 
     (select sum(t2.value) 
     from t t2 
     where t2.date <= t.date 
     ) as cumvalue 
from t