2009-11-10 67 views

回答

3

搜索「公用表表達式」。另請參見this link

更新添加例如從上面提到的鏈接:

;WITH Fibonacci(n, f, f1) 
AS (
     -- This is the anchor part 
     -- Initialize level to 1 and set the first two values as per definition 
     SELECT CAST(1 AS BIGINT), 
       CAST(0 AS BIGINT), 
       CAST(1 AS BIGINT) 

     UNION ALL 

     -- This is the recursive part 
     -- Calculate the next Fibonacci value using the previous two values 
     -- Shift column (place) for the sum in order to accomodate the previous 
     -- value too because next iteration need them both 
     SELECT n + 1, 
       f + f1, 
       f 
     FROM Fibonacci 
     -- Stop at iteration 93 because we than have reached maximum limit 
     -- for BIGINT in Microsoft SQL Server 
     WHERE n < 93 
) 
-- Now the easy presentation part 
SELECT n, 
     f AS Number 
FROM Fibonacci