我只是想創建一個SQL查詢,結果就像圖像上,就像SQL中的斐波那契數列。如何連續添加起始行和下一行的值
Ex。
第1列:10,則Result列的值爲Result:10,因爲那是第一行。 ,那麼假設column1第2行的值是50,那麼Result 2nd行的值將是60 ..(結果:60)...依此類推。
示例如下圖所示。
我該如何做到這一點?任何幫助,將不勝感激。由於
我只是想創建一個SQL查詢,結果就像圖像上,就像SQL中的斐波那契數列。如何連續添加起始行和下一行的值
Ex。
第1列:10,則Result列的值爲Result:10,因爲那是第一行。 ,那麼假設column1第2行的值是50,那麼Result 2nd行的值將是60 ..(結果:60)...依此類推。
示例如下圖所示。
我該如何做到這一點?任何幫助,將不勝感激。由於
的解決方案。
SELECT t2.id, t2.value, SUM(t2.value) OVER (ORDER BY t2.id) as [Result]
FROM Test01 t2
ORDER BY t2.id;
非常感謝你Sabyasachi,它的工作原理! :),我使用這一個,因爲即時通訊使用2012版本..這使得較小的代碼和易於理解。謝謝! – Japongskie
你可以試試這個
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
非常感謝你..這正是我正在尋找的邏輯,但我只想問一個問題:)因爲我是CTE新手,是SQL中的內置函數嗎? ,這是我第一次使用它:)謝謝。 – Japongskie
CTE不是關鍵字或功能。嘗試使用Google公共表格表單搜索。你會看到很多參考資料。乾杯! – DarkKnight
你也可以使用一個窗口函數。
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
試試這個
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
http://stackoverflow.com/questions/21746100/how-to-generate-fibonacci-series – willoller
@willoller感謝那個,但實際上「即時尋找如何在上面的圖像上的兩列「column1和result」之間添加值,並不像創建斐波納契數列那麼簡單。像斐波那契一樣,但在兩列之間添加數字。 – Japongskie
你要求跑步總數嗎? – Blorgbeard