有没有办法在WITH表达式中定义变量?就像是:
;WITH SomeName AS (
declare @somevar decimal
set @somevar = ...
SELECT ....)
Run Code Online (Sandbox Code Playgroud)
可能?
Ada*_*Dev 20
不,您需要在CTE之外声明/设置它
DECLARE @somevar DECIMAL
;WITH SomeName AS (SELECT....)
SELECT @somevar = ...
FROM SomeName
Run Code Online (Sandbox Code Playgroud)
每个MSDN:
CTE_query_definition
指定SELECT语句,其结果集填充公用表表达式.CTE_query_definition的SELECT语句必须满足与创建视图相同的要求,但CTE无法定义另一个CTE.
我不得不多次使用以下方法作为解决方法(例如,在 t-sql 中使用 R-Server 作为 input_data_1 表达式;请参阅https://learn.microsoft.com/en-us/sql/高级分析/教程/quickstart-r-inputs-and-outputs?view=sql-server-2017)。下面举例说明:
WITH ctename (varname) as (
SELECT MAX(somevar) FROM sometable
)
SELECT *
FROM someothertable a
JOIN ctename b on 1=1
WHERE a.col1 > b.varname;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31562 次 |
| 最近记录: |