如何生成斐波纳契数列

1 sql sql-server

如何在sql中生成Fibonacci系列!

我需要生成Fibonacci系列0 1 1 2 3 5 8 13 21 ... N.

我使用C代码很容易做到这一点,我需要使用Sql做到这一点!

N J*_*N J 14

试试这个简单的查询:

1)逐行结果(单列,多行)

WITH Fibonacci (PrevN, N) AS
(
     SELECT 0, 1
     UNION ALL
     SELECT N, PrevN + N
     FROM Fibonacci
     WHERE N < 1000000000
)
SELECT PrevN as Fibo
     FROM Fibonacci
     OPTION (MAXRECURSION 0);
Run Code Online (Sandbox Code Playgroud)

输出1:

在此输入图像描述

2)仅针对一行中的结果(逗号被解释,在单个单元格中)

WITH Fibonacci (PrevN, N) AS
(
 SELECT 0, 1
    UNION ALL
    SELECT N, PrevN + N
    FROM Fibonacci
    WHERE N < 1000000000
)
SELECT Substring(
    (SELECT cast(', ' as varchar(max)) + cast(PrevN as varchar(max)
);
FROM Fibonacci
FOR XML PATH('')),3,10000000) AS list
Run Code Online (Sandbox Code Playgroud)

输出2: 在此输入图像描述