into - temp table sql 2016
Cómo crear tabla Temp con SELECT*INTO tempTable FROM CTE Query (5)
Muestra DDL
create table #Temp
(
EventID int,
EventTitle Varchar(50),
EventStartDate DateTime,
EventEndDate DatetIme,
EventEnumDays int,
EventStartTime Datetime,
EventEndTime DateTime,
EventRecurring Bit,
EventType int
)
;WITH Calendar
AS (SELECT /*...*/)
Insert Into #Temp
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
Asegúrese de que la tabla se elimine después de su uso
If(OBJECT_ID(''tempdb..#temp'') Is Not Null)
Begin
Drop Table #Temp
End
Tengo una consulta MS SQL CTE desde la cual quiero crear una tabla temporal. No estoy seguro de cómo hacerlo, ya que da un Invalid Object name
.
A continuación está toda la consulta para referencia
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)
Agradecería un punto en la dirección correcta o si puedo crear una tabla temporal a partir de esta consulta CTE
Cómo usar TempTable en el procedimiento almacenado?
Estos son los pasos:
CREAR TABLA DE TEMP.
-- CREATE TEMP TABLE
Create Table #MyTempTable (
EmployeeID int
);
INSERT TEMP SELECT DATA INTO TABLE table
-- INSERT COMMON DATA
Insert Into #MyTempTable
Select EmployeeID from [EmployeeMaster] Where EmployeeID between 1 and 100
SELECCIONAR TABLA DE TEMPERATURAS (Ahora puede usar esta consulta de selección)
Select EmployeeID from #MyTempTable
PASO FINAL GOTA LA MESA
Drop Table #MyTempTable
Espero que esto sea de ayuda. Simple y claro :)
El SELECT ... INTO
debe estar en la selección del 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)
Realmente, el formato puede ser bastante simple, a veces no es necesario predefinir una tabla temporal; se creará a partir de los resultados de la selección.
Select FieldA...FieldN
into #MyTempTable
from MyTable
Entonces, a menos que desee tipos diferentes o sea muy estricto en la definición, mantenga las cosas simples. Tenga en cuenta también que cualquier tabla temporal creada dentro de un procedimiento almacenado se descarta automáticamente cuando el procedimiento almacenado termina de ejecutarse. Si el procedimiento almacenado A crea una tabla temporal y llama al procedimiento almacenado B, entonces B podrá usar la tabla temporal que creó A.
Sin embargo, generalmente se considera una buena práctica de codificación eliminar explícitamente cada tabla temporal que crees de todos modos.
Select Eventname,
count(Eventname) as ''Counts''
INTO #TEMPTABLE
FROM tblevent
where Eventname like ''A%''
Group by Eventname
order by count(Eventname)
Aquí al usar la cláusula into la tabla se crea directamente