2015-03-03 18 views
5

Chcę przechowywać wynik tego zapytania do tabeli temp:Wkładanie wynik z zapytania cte do Temp tabeli

WITH cOldest AS 
(
    SELECT 
     *, 
     ROW_NUMBER() OVER (PARTITION BY [MyKey] ORDER BY SomeColumn DESC) AS rnDOB 
    FROM MyTable 
) 
SELECT 
    C.* 
*** Insert into #MyTempTable *** This part doesn't work 
    FROM 
    cOldest C 
    WHERE 
    C.rnDOB = 1 

z góry dzięki.

Odpowiedz

4

Przyjmując to za SQL Server: CTE jest dobre tylko dla jeden rachunku - więc nie można mieć zarówno SELECT oraz INSERT - wystarczy użyć INSERT:

WITH cOldest AS 
(
    SELECT 
     *, 
     ROW_NUMBER() OVER (PARTITION BY [MyKey] ORDER BY SomeColumn DESC) AS rnDOB 
    FROM MyTable 
) 
INSERT INTO #MyTempTable(Col1, Col2, ....., ColN) 
    SELECT Col1, Col2, ...., ColN 
    FROM cOldest C 
    WHERE C.rnDOB = 1 

Wymaga to #MyTempTable już istnieje. Jeśli chcesz utworzyć go za pomocą SELECT - użyj następującej składni:

WITH cOldest AS 
(
..... 
) 
SELECT c.* 
INTO #MyTempTable 
FROM cOldest c 
WHERE C.rnDOB = 1 
+0

Dzięki Mark! Zdałem sobie sprawę, że aby móc eksportować tabelę Temp, musi to być globalna temp. Do ## MyTempTable @ marc_s – Ariox66

Powiązane problemy