Masukkan Data ke Temp Tabel dengan Query


144

Saya memiliki permintaan yang sudah ada yang menampilkan data saat ini, dan saya ingin memasukkannya ke dalam tabel Temp, tetapi saya mengalami beberapa masalah. Adakah yang punya wawasan tentang cara melakukan ini?

Berikut ini sebuah contoh

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%', '%') 

Ini sepertinya menampilkan data saya saat ini dengan cara yang saya perlukan, tapi saya ingin meneruskannya ke Temp Table. Masalah saya adalah bahwa saya cukup baru untuk SQL Queries dan belum dapat menemukan cara untuk melakukannya. Atau jika itu mungkin. Jika tidak memungkinkan, apakah ada cara yang lebih baik untuk mendapatkan data yang saya cari WHERE application LIKE isNull('%MORESTUFF%','%')dalam tabel temp?


2
Ke dalam #temptabel yang sudah ada atau perlu membuat yang baru?
Martin Smith

1
@ MartinSmith - Ini akan menjadi yang baru.
scapegoat17

1
LIKE ISNULL('%MORESTUFF%', '%')akan selalu sama dengan LIKE '%MORESTUFF%', bukan? Karena '% MORESTUFF%' (string literal) tidak pernah nol?
gnud

Jawaban:


187
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%',
      '%')

148

SQL Server R2 2008 membutuhkan ASklausa sebagai berikut:

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

Permintaan gagal tanpa AS xdi akhir.


EDIT

Ini juga diperlukan saat menggunakan SS2016, harus menambahkan as tsampai akhir.

 Select * into #result from (SELECT * FROM  #temp where [id] = @id) as t //<-- as t

5
Menarik. Saya baru saja mengalami masalah yang sama. Menambahkan "As [x]" pada akhirnya membuat semuanya berfungsi dengan baik. Kenapa ini?
godfathr

5
@ godfathr itu karena dari klausa menggunakan tabel turunan
wootscootinboogie

35

Cara tercepat untuk melakukan ini adalah menggunakan perintah "SELECT INTO" mis

SELECT * INTO #TempTableName
FROM....

Ini akan membuat tabel baru, Anda tidak harus membuatnya terlebih dahulu.


Apakah mungkin menambahkan kolom ke #TempTableName?
FrenkyB

@FrenkyB ya, setelah tabel dibuat, Anda dapat menggunakan pernyataan ALTER TABLE ADD COLUMN
Yuriy Galanter

12

Secara pribadi, saya perlu tangan kecil untuk mencari tahu bagaimana menggunakan ini dan itu benar-benar hebat.

IF(OBJECT_ID('tempdb..#TEMP') IS NOT NULL) BEGIN DROP TABLE #TEMP END
        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

8

Anda dapat melakukannya seperti ini:

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

Pastikan kolom-kolomnya sesuai, keduanya dalam jumlah seperti pada tipe data.


5

Coba ini:

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

Silakan gunakan alias dengan x sehingga skrip dan hasilnya tidak akan gagal.


3
SELECT * INTO #TempTable 
FROM SampleTable
WHERE...

SELECT * FROM #TempTable
DROP TABLE #TempTable

2

Ini mungkin. Coba dengan cara ini:

Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
 from Spotfy 
    where ArtistName = 'BossaDoSamba'
 group by ArtistName;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.