我正在尝试编写使用CTE的动态查询。但是我遇到了问题-请参见下面的内容。这是一个简化的情况。
declare @DynSql varchar(max)='';
declare @cnt as integer;
with months as (
select CAST('07/01/2010' as DATE) stdt
UNION ALL
SELECT DATEADD(MONTH,1,STDT) FROM months
WHERE DATEADD(MONTH,1,STDT)<CAST('06/30/2011' AS DATE)
)
select COUNT(*) from months
set @DynSql='select * from months'
exec (@DynSql)
这不起作用-我得到的错误是"无效对象名称'Months'"
有没有办法实现我想要的。如果我使用Temp表或表变量,它会起作用吗。
select COUNT(*) from months
?还有为什么需要一个dynamic
查询? - van