2015-08-27 37 views
0

我只是想創建一個SQL查詢,結果就像圖像上,就像SQL中的斐波那契數列。如何連續添加起始行和下一行的值

Ex。

第1列:10,則Result列的值爲Result:10,因爲那是第一行。 ,那麼假設column1第2行的值是50,那麼Result 2nd行的值將是60 ..(結果:60)...依此類推。

示例如下圖所示。

我該如何做到這一點?任何幫助,將不勝感激。由於

enter image description here

+0

http://stackoverflow.com/questions/21746100/how-to-generate-fibonacci-series – willoller

+0

@willoller感謝那個,但實際上「即時尋找如何在上面的圖像上的兩列「column1和result」之間添加值,並不像創建斐波納契數列那麼簡單。像斐波那契一樣,但在兩列之間添加數字。 – Japongskie

+0

你要求跑步總數嗎? – Blorgbeard

回答

4

的解決方案。

SELECT t2.id, t2.value, SUM(t2.value) OVER (ORDER BY t2.id) as [Result] 
FROM Test01 t2 
ORDER BY t2.id; 

sql fiddle demo

+0

非常感謝你Sabyasachi,它的工作原理! :),我使用這一個,因爲即時通訊使用2012版本..這使得較小的代碼和易於理解。謝謝! – Japongskie

5

你可以試試這個

CREATE TABLE #TEST(ID INT,VALUE INT) 
INSERT INTO #TEST VALUES 
(1,10),(2,20),(3,30),(4,40),(5,50),(6,60),(7,70) 

;WITH CTE 
as 
(
    SELECT ID,VALUE,VALUE AS RESULT FROM #TEST WHERE ID=1 
    UNION ALL 
    SELECT T.ID,T.VALUE,T.VALUE+C.RESULT 
    FROM #TEST T INNER JOIN CTE C ON T.ID = C.ID+1 
) 

SELECT * FROM CTE 

Result

+0

非常感謝你..這正是我正在尋找的邏輯,但我只想問一個問題:)因爲我是CTE新手,是SQL中的內置函數嗎? ,這是我第一次使用它:)謝謝。 – Japongskie

+0

CTE不是關鍵字或功能。嘗試使用Google公共表格表單搜索。你會看到很多參考資料。乾杯! – DarkKnight

1

你也可以使用一個窗口函數。

DECLARE @myTable TABLE(ID INT, val INT); 

INSERT INTO @myTable VALUES (1,10), 
          (2,7), 
          (3,-4), 
          (4,1); 
SELECT ID, 
     val, 
     SUM(val) OVER (ORDER BY ID 
         ROWS BETWEEN UNBOUNDED PRECEDING 
         AND CURRENT ROW) AS result 
FROM @myTable 
ORDER BY ID; 

ID val result 
-- --- ------ 
1 10 10 
2 7 17 
3 -4 13 
4 1 14 
2

試試這個

select Id, value, 
(select sum(t2.value) from TEST01 t2 where t2.id <= t1.id) 
as Result 
from TEST01 t1 

如果您正在使用MSSQL2012或更高版本可以使用OVER條款查找小提琴http://sqlfiddle.com/#!6/a8f56/2