2014-01-11 112 views
3

我想設置一個CTE內部的變量值,如下所示:SQL:選擇在設置變量CTE

DECLARE @var INT; 

WITH cte AS 
(
    SELECT @var = column FROM ... 
) 

,但我得到了以下錯誤:Incorrect syntax near '='

這是不可能的要麼做,要麼在CTE內執行語法更改?

+1

AFAIK,你不能在CTE內設置一個變量,但您可以用的的_result_ CTE:'用CTE(選擇42作爲Lisa)選擇@Var =來自CTE的Lisa。 – HABO

回答

3

CTE更像是一個VIEW而不是存儲過程。據我所知,它似乎不是正確的語法 - 因爲你不能在CTE中設置一個變量。

+0

@ HABO上面的評論(我相信)解決了OP所問的問題。 – Brandon

1

不完全是價值分配給一個變量,但也許你可以做這樣的事情....

DECLARE @T TABLE (ID INT, VALUE INT) 
INSERT INTO @T VALUES (1,100),(2,200),(3,300),(4,400),(5,500) 

;WITH Variable (A) --<-- The value you wanted to store in a variable 
AS 
    ( 
    SELECT AVG(VALUE) 
    FROM @T 
), 
CTE (ID , Value) --<-- Actual CTE where you wanted to use the value 
AS 
    (
    SELECT * 
    FROM @T 
    WHERE VALUE > (SELECT A  --<-- Use that value here 
        FROM Variable) 
) 
SELECT * 
FROM CTE