Sql server 2008 无效的对象名称--SQL Server 2008
现在我得到一个错误“无效对象名qryTI_3”。我只有在尝试执行整个过程时才会出现此错误,但我仍然可以保存该过程。我已验证引用的表中是否存在所有字段。这个查询有什么问题Sql server 2008 无效的对象名称--SQL Server 2008,sql-server-2008,tsql,Sql Server 2008,Tsql,现在我得到一个错误“无效对象名qryTI_3”。我只有在尝试执行整个过程时才会出现此错误,但我仍然可以保存该过程。我已验证引用的表中是否存在所有字段。这个查询有什么问题 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); WITH qryTI_1 AS ( SELECT tblTSF.fldFPK, tblTSF.fldPK, tblTSF.fldCI, tblTSF.fldNI FROM tblTSF WHERE (
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
WITH qryTI_1 AS
(
SELECT tblTSF.fldFPK, tblTSF.fldPK, tblTSF.fldCI, tblTSF.fldNI
FROM tblTSF
WHERE (((tblTSF.fldMN)<>-254))
),
qryTI_2 AS
(
SELECT tblTSF.fldFPK, tblTSF.fldPK, tblAL.fldLN AS fldCI, 0 AS fldNI
FROM tblAL, tblTSF
GROUP BY tblTSF.fldFPK, tblTSF.fldPK, tblAllLevels.fldLN
HAVING (((tblAL.fldLN)<>0 And (tblAL.fldLN)<>6))
),
qryTI_3 AS
(
SELECT * FROM qryTI_1 UNION SELECT * FROM qryTI_2
)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(fldCI)
from qryTI_3
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT fldPK, fldFPK, ' + @cols + '
FROM
(
SELECT fldPK
,fldFPK
,fldNI
,fldCI
FROM qryTI_3
) as x
PIVOT
(
Sum(fldNI) FOR fldCI IN (' + @cols + ')
) as p '
execute sp_executesql @query
CTE仅在该语句期间存在
WITH
cte1 AS
(blah)
,
cte2 AS
(blah)
,
cte3 AS
(blah)
statement1; -- The CTE definitions are part of this statement
statement2; -- They are not part of this statement, they're gone by now
因此,一旦SET语句完成,在到达execute调用之前,CTE也会消失
更不用说调用execute也创建了一个新的作用域,其中CTE和变量也不存在
尝试创建这些视图而不是CTE,这样它们就可以存在于多个语句中,并且在调用execute创建的范围内可见。CTE只在该语句的持续时间内存在
WITH
cte1 AS
(blah)
,
cte2 AS
(blah)
,
cte3 AS
(blah)
statement1; -- The CTE definitions are part of this statement
statement2; -- They are not part of this statement, they're gone by now
因此,一旦SET语句完成,在到达execute调用之前,CTE也会消失
更不用说调用execute也创建了一个新的作用域,其中CTE和变量也不存在
尝试创建这些视图而不是CTE,以便它们存在于多个语句中,并且在调用execute创建的范围内可见