2013-11-20 26 views
85

Mevcut verileri veren mevcut bir sorgum var ve bunu bir Temp tablosuna eklemek istiyorum ancak bazı sorunlarım var. Bunun nasıl yapılacağı konusunda bir fikir sahibi olur mu?Sorgula Temp Tablosuna Veri Ekleme

İşte bu ben gerek benim verileri şu yolu çıkışına görünüyor örneği

SELECT * 
FROM (SELECT Received, 
       Total, 
       Answer, 
       (CASE 
        WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' 
       END) AS application 
     FROM FirstTable 
     WHERE Recieved = 1 
       AND application = 'MORESTUFF' 
     GROUP BY CASE 
        WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' 
       END) data 
WHERE application LIKE isNull('%MORESTUFF%', '%') 

, ama bir Temp tablo haline geçmek istiyorum. Benim sorunum, SQL Sorguları için oldukça yeni olduğum ve bunu yapmanın bir yolunu bulamadığım. Ya da mümkün olsa bile. Mümkünse, WHERE application LIKE isNull('%MORESTUFF%','%') aradığım verileri geçici bir tabloya almanın daha iyi bir yolu var mı?

Herhangi bir yardım çok takdir! Teşekkürler!

+2

veya yeni bir tane oluşturmak gerekir: bu şekilde deneyin? –

+1

@MartinSmith - Yeni bir tane olurdu. – scapegoat17

cevap

112
SELECT * 
INTO #Temp 
FROM 

    (SELECT 
    Received, 
    Total, 
    Answer, 
    (CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) AS application 
    FROM 
    FirstTable 
    WHERE 
    Recieved = 1 AND 
    application = 'MORESTUFF' 
    GROUP BY 
    CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) data 
WHERE 
    application LIKE 
    isNull(
     '%MORESTUFF%', 
     '%') 
8

Böyle bunu yapabilir:

INSERT INTO myTable (colum1, column2) 
SELECT column1, column2 FROM OtherTable; 

Sadece veri türü olarak emin sütunlar, hem sayısında eşleşen olduğundan emin olun.

21

Bunu yapmanın en hızlı yolu, "SELECT INTO" komutunu kullanmaktır, örn.

SELECT * INTO #TempTableName 
FROM.... 

Bu yeni bir tablo yaratacak, önceden oluşturmanız gerekmez. aşağıdaki gibi

+0

#TempTableName için sütun eklemek mümkün mü? – FrenkyB

+0

@FrenkyB Evet, bir kez tablo oluşturulduğunda ALTER TABLE ADD COLUMN deyimini kullanabilirsiniz –

86

SQL Server R2 2008 AS maddesini gerekir:

SELECT * 
INTO #temp 
FROM (
    SELECT col1, col2 
    FROM table1 
) AS x 

sorgu sonunda AS x olmadan başarısız oldu.

+4

İlginç. Sadece aynı sorunu yaşadım. Sonunda "As [x]" ifadesi eklendiğinde her şey yolunda gitti. Bu neden? – godfathr

+2

@godfathr, çünkü yan tümcesinden türetilmiş bir tablo kullanıyor – wootscootinboogie

2

bu deneyin: Bu komut ve sonucu başarısız olmayacak şekilde

SELECT * 
INTO #Temp 
FROM 
(select * from tblorders where busidate ='2016-11-24' and locationID=12 
) as X 

x takma kullanın.

2

Şahsen, bunun nasıl kullanılacağını anlatan küçük bir ele ihtiyacım vardı ve gerçekten harika.

SELECT * 
    INTO #TEMP 
    FROM (
    The query you want to use many times 
    ) AS X 

SELECT * FROM #TEMP WHERE THIS = THAT 
SELECT * FROM #TEMP WHERE THIS <> THAT 
SELECT COL1,COL3 FROM #TEMP WHERE THIS > THAT 

DROP TABLE #TEMP 
1
SELECT * INTO #TempTable 
FROM SampleTable 
WHERE... 

SELECT * FROM #TempTable 
DROP TABLE #TempTable 
0

bu mümkündür. zaten var olan bir `# temp` masanın içine

Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
from Spotfy 
    where ArtistName = 'BossaDoSamba' 
group by ArtistName; 
İlgili konular