有没有办法将 CTE 输出插入 SQL 服务器中的 #mytemp

Is there a way to insert CTE output into a #mytemp in SQL server

我很难将我的 CTE 插入#mytemp table

DECLARE @dt1 Datetime='2012-08-01'
DECLARE @dt2 Datetime= (SELECT DATEADD(MM,DATEDIFF(MM, 0, GETDATE()),0))

;WITH ctedaterange 
     AS (SELECT [rn]=Row_number() 
                       OVER( 
                         ORDER BY (SELECT NULL)) 
         FROM   sys.objects a 
                CROSS JOIN sys.objects b 
                CROSS JOIN sys.objects c 
                CROSS JOIN sys.objects d) 
SELECT Dateadd(dd, rn, @dt1) 
INTO #PROP_TABLE
FROM   ctedaterange 
WHERE  [rn] <= Datediff(dd, @dt1, @dt2)

是的,您没有为您的列设置别名。您需要为列命名,如下所示,否则它将不起作用,因为所有 table 都需要列名

DECLARE @dt1 Datetime='2012-08-01'
DECLARE @dt2 Datetime= (SELECT DATEADD(MM,DATEDIFF(MM, 0, GETDATE()),0))

;WITH ctedaterange 
     AS (SELECT [rn]=Row_number() 
                       OVER( 
                         ORDER BY (SELECT NULL)) 
         FROM   sys.objects a 
                CROSS JOIN sys.objects b 
                CROSS JOIN sys.objects c 
                CROSS JOIN sys.objects d) 
SELECT Dateadd(dd, rn, @dt1) AS [Date] --- Insert a column Name here

INTO #PROP_TABLE

FROM   ctedaterange 
WHERE  [rn] <= Datediff(dd, @dt1, @dt2)

SELECT * FROM  #PROP_TABLE

DROP TABLE  #PROP_TABLE