Here is a very nice solution which uses CTE, not from my head but found it on SQL Server Central: [Fibonacci Sequence CTE][1]. I've only slightly altered it to return the maximum sequence which fits to int data type.
WITH Fib(Num, fib, fib2) AS (
SELECT 0 AS Expr1, 0 AS Expr2, 1 AS Expr3
UNION ALL
SELECT Num + 1 AS Expr1, fib + fib2 AS Expr2, fib
FROM Fib AS fib_2
WHERE (Num <= 44)
)
SELECT Num, fib AS Fibonacci_Number
FROM Fib AS Fib_1
WHERE Num > 0
[1]: http://www.sqlservercentral.com/Forums/Topic1001759-1291-1.aspx
↧