我遇到的問題如下:動態查詢SELECT INTO #TmpTbl不工作
DECLARE @TmpMemberTypeCount NVARCHAR(4000)
SET @TmpMemberTypeCount =
N'SELECT DISTINCT
StoreID
,AgreedDate
,'+'''TotalCount'''+' as Type
,'+ @MemberTypeCols + '
INTO #TmpMemberTypeCount
FROM #TmpTbl as t
PIVOT
(
SUM(CP_Count)
FOR MemberShipType
IN (' + @MemberTypePvt + ')
) as p
GROUP BY StoreID
,AgreedDate'
EXEC (@TmpMemberTypeCount)
當我運行此我沒有得到一個錯誤,但是,如果我嘗試運行
SELECT * FROM #TmpMemberTypeCount
我得到的錯誤,基本上說,表尚未創建。
如果我將INTO #TmpMemberTypeCount
更改爲INTO TmpMemberTypeCount
一切正常。
是不是可以使用臨時表與動態查詢?
另一個需要注意的是,如果我將EXEC
更改爲PRINT
,然後運行打印的內容,則一切運行良好,並創建臨時表。
UPDATE:
我之所以需要使用#TmpTbl
是因爲我轉出每家店的獨特membertypes。因此,如果用戶正在運行在同一時間這個報告中,USER1在#TmpTbl
列可能是:
StoreID,
AgreedDate,
Type,
User, -- MemberType1
Admin, -- MemberType2
Staff, -- MemberType3
在#TmpTbl
,對於user2的列可能是:
StoreID,
AgreedDate,
Type,
Trainer, -- MemberType1
Chef, -- MemberType2
CoatCheck, -- MemberType3
Painter -- MemberType4
的MemberTypes存儲在@MemberTypeCols
像Trainer, Chef, CoatCheck, Painter
有一件事你忘了,**本地臨時表是每個上下文**使用EXEC你切換到不同的上下文,當完成EXEC時臨時表已經消失,當你使用普通表時,它不管上下文都會持久。 – lad2025