web-dev-qa-db-ja.com

クエリを使用してデータを一時テーブルに挿入する

現在のデータを出力する既存のクエリがあり、それをTempテーブルに挿入したいのですが、問題があります。これを行う方法について誰かが何か洞察を持っていますか?

これが例です

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

これは私のデータを現在必要としている方法で出力するようですが、それをTemp Tableに渡したいのです。私の問題は、私がSQL Queriesにかなり慣れておらず、そうする方法を見つけることができなかったということです。それともそれさえ可能なら。それが不可能な場合は、WHERE application LIKE isNull('%MORESTUFF%','%')を探しているデータを一時テーブルに入れるためのより良い方法はありますか?

任意の助けは大歓迎です!ありがとうございます。

118
scapegoat17
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%',
      '%')
149
Yosi Dahari

これを行う最も速い方法は "SELECT INTO"コマンドを使うことです。

SELECT * INTO #TempTableName
FROM....

これで新しいテーブルが作成されます。事前に作成する必要はありません。

28
Yuriy Galanter

あなたはこのようにすることができます:

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

データ型と同じ数の列が一致していることを確認してください。

8
wvdz

個人的に、私はこれを使用する方法を考え出すことを持っている少し手を必要としました、そしてそれは本当に、素晴らしいです。

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
5
theteague

これを試して:

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

スクリプトと結果が失敗しないようにxとaliasを使用してください。

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

SELECT * FROM #TempTable
DROP TABLE #TempTable
1
Saqib A. Azhar

これは可能です。この方法を試してください:

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