我正在尝试在CTE中设置变量值,如下所示:
DECLARE @var INT;
WITH cte AS
(
SELECT @var = column FROM ...
)
但是我收到以下错误:Incorrect syntax near '='
这是不可能的,或者在CTE内部执行时语法是否会改变?
答案 0 :(得分:3)
CTE更像是VIEW而不是存储过程。它似乎不是正确的语法 - 因为你无法在CTE中设置变量 - 据我所知。
答案 1 :(得分: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