我有一个MS SQL CTE查询,我想从它创建一个临时表。我不确定该怎么做,因为它会给出一个Invalid Object name
错误。
以下是整个查询以供参考
SELECT * INTO TEMPBLOCKEDDATES FROM
;with Calendar as (
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate
,EventType from EventCalender
where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1
union all
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, PlannedDate)
,EventType from Calendar
where EventRecurring = 1
and dateadd(dd, 1, PlannedDate) <= EventEndDate
)
select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
or EventEnumDays is null
order by EventID, PlannedDate
option (maxrecursion 0)
如果我能从这个CTE查询中创建一个临时表,我将不胜感激
发布于 2014-01-06 09:50:38
实际上,格式可以非常简单-有时不需要预定义临时表-它将从select的结果创建。
Select FieldA...FieldN
into #MyTempTable
from MyTable
因此,除非你想要不同的类型,或者对定义非常严格,否则请保持简单。另请注意,在存储过程中创建的任何临时表都会在存储过程执行完毕时自动删除。如果存储过程A创建了一个临时表并调用了存储过程B,那么B将能够使用A创建的临时表。
然而,显式地删除您创建的每个临时表通常被认为是很好的编码实践。
发布于 2017-11-07 04:13:07
如何在存储过程中使用TempTable?
以下是步骤:
创建临时表
-- CREATE TEMP TABLE
Create Table #MyTempTable (
EmployeeID int
);
在临时表中插入临时选择数据
-- INSERT COMMON DATA
Insert Into #MyTempTable
Select EmployeeID from [EmployeeMaster] Where EmployeeID between 1 and 100
SELECT TEMP表(现在可以使用此select查询)
Select EmployeeID from #MyTempTable
最后一步删除表
Drop Table #MyTempTable
我希望这能有所帮助。简单明了:)
发布于 2012-07-15 18:54:45
SELECT ... INTO
需要在从CTE中选择。
;WITH Calendar
AS (SELECT /*... Rest of CTE definition removed for clarity*/)
SELECT EventID,
EventStartDate,
EventEndDate,
PlannedDate AS [EventDates],
Cast(PlannedDate AS DATETIME) AS DT,
Cast(EventStartTime AS TIME) AS ST,
Cast(EventEndTime AS TIME) AS ET,
EventTitle,
EventType
INTO TEMPBLOCKEDDATES /* <---- INTO goes here*/
FROM Calendar
WHERE ( PlannedDate >= Getdate() )
AND ',' + EventEnumDays + ',' LIKE '%,' + Cast(Datepart(dw, PlannedDate) AS CHAR(1)) + ',%'
OR EventEnumDays IS NULL
ORDER BY EventID,
PlannedDate
OPTION (maxrecursion 0)
https://stackoverflow.com/questions/11491240
复制相似问题