首页 > 解决方案 > 为 CTE 内的变量赋值

问题描述

我想在 CTE 中为我的变量分配一个值,并在我的下一个 CTE 中使用它。

可能吗?

declare @TypeQty as int
;
With CTE1 as
(@TypeQty = (select Count(ID) as MyQty from MyTbl))
,CTE2 as
(select * from MyTbl2 where Qty= @TypeQty)
Select * from CTE2

我知道可以通过其他方式实现,但我想知道 CTE 是否可行?

标签: sqlsql-servertsqlsql-server-2017

解决方案


在 SQL Server 中,您不能像在问题中所写的那样使用此语法。

您可以使用没有变量的计算值,只需引用 CTE 本身。像这样的东西:

WITH
CTE1
as
(
    select Count(ID) as MyQty
    from MyTbl
)
,CTE2
as
(
    select *
    from
        MyTbl2
        INNER JOIN CTE1 ON MyTbl2.Qty = CTE1.MyQty
)
Select *
from CTE2
;

推荐阅读