Есть ли способ вставить вывод CTE в #mytemp на SQL сервере - PullRequest
0 голосов
/ 06 февраля 2020

Мне трудно вставить свой CTE в таблицу #mytemp

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)

1 Ответ

0 голосов
/ 06 февраля 2020

Да, вы не указали псевдоним. вам нужно дать имя столбцу, как показано ниже, иначе он не будет работать, поскольку для всей таблицы нужно указать имя столбца

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
...