在执行以下查询时显示Invalid object name '#temp1'.
可以任何正文知道发生错误的原因是这是我用于获取代码的原始代码,她的不同表格形成我需要得到的总和每个表的每一行
DECLARE @t TABLE (
id int IDENTITY(1,1),
BranchName nvarchar(max)
)
DECLARE @n int = 0,
@i int = 1,
@BranchName nvarchar(max),
@sql nvarchar(max),
@columns nvarchar(max)
INSERT INTO @t
SELECT DISTINCT BranchName
FROM ALX_Branches
SELECT @n = @@ROWCOUNT
WHILE @n >= @i
BEGIN
SELECT @BranchName = BranchName
FROM @t
WHERE id = @i
SELECT @columns = (
SELECT DISTINCT ','+QUOTENAME([SubInventory])
FROM #MyTempTable
WHERE [BranchName] = @BranchName
FOR XML PATH('')
)
SELECT @sql = N'--
SELECT * into #temp1
FROM (
SELECT [BranchID],
[SubInventory],
[Product],
[Stock]
FROM #MyTempTable
WHERE [BranchName] = ''' +@BranchName +'''
) as t
PIVOT (
MAX([Stock]) FOR [SubInventory] IN ('+STUFF(@columns,1,1,'')+')
) as pvt'
EXEC sp_executesql @sql
select * from #temp1
答案 0 :(得分:0)
首先,不需要在之前创建#temp1表。
因为您正在使用已经在其中创建表格的“Select * into”。
假设将此注释键入为注释,但我没有足够的信誉得分。
的原因
Invalid object name '#temp1'
是:变量@sql为NULL,因为#temp1尚未通过“Select * into”子句创建。
所以追加从动态sql中的#temp1中选择如下:
SELECT @sql = N'--
SELECT * into #temp1
FROM (
SELECT [BranchID],
[SubInventory],
[Product],
[Stock]
FROM #MyTempTable
WHERE [BranchName] = ''' +@BranchName +'''
) as t
PIVOT (
MAX([Stock]) FOR [SubInventory] IN ('+STUFF(@columns,1,1,'')+')
) as pvt
select * from #temp1 '
EXEC sp_executesql @sql