2015-03-03 15 views
5
Geçici bir tabloya bu sorgunun sonucunu saklamak istediğiniz

içine cte sorgusu ile bir sonucunu ekleme: öncedenbir Temp Tablo

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 

teşekkür.

cevap

4

şudur varsayarsak SQL Server için: CTE sadece bir deyimi için iyidir - böylece bir SELECT ve INSERT hem olamaz - sadece INSERT kullanın:

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 

Bu gerektirir #MyTempTable zaten var. SELECT ile oluşturmak istiyorsanız, bu sözdizimini kullanın:

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

Teşekkürler Mark! Sıcaklık tablosunu ihraç edebilmek için, Küresel bir sıcaklık olmalıdır. ## MyTempTable @marc_s içine – Ariox66