it-swarm.com.de

Daten mit Abfrage in temporäre Tabelle einfügen

Ich habe eine vorhandene Abfrage, die aktuelle Daten ausgibt, und ich möchte sie in eine Temp-Tabelle einfügen, habe jedoch einige Probleme damit. Hätte jemand einen Einblick, wie das geht?

Hier ist ein Beispiel

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

Dies scheint, meine Daten derzeit so auszugeben, wie ich es brauche, aber ich möchte es in eine temporäre Tabelle übergeben. Mein Problem ist, dass ich für SQL-Abfragen ziemlich neu bin und keinen Weg gefunden habe, dies zu tun. Oder ob es überhaupt möglich ist. Wenn es nicht möglich ist, gibt es einen besseren Weg, um die Daten, die ich suche WHERE application LIKE isNull('%MORESTUFF%','%') in eine temporäre Tabelle zu bekommen?

Jede Hilfe wäre sehr dankbar! Vielen Dank!

108
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%',
      '%')
140
Yosi Dahari

SQL Server R2 2008 benötigt die AS-Klausel wie folgt: 

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

Die Abfrage ist ohne den AS x am Ende fehlgeschlagen. 


EDIT

Bei der Verwendung von SS2016 muss as t am Ende hinzugefügt werden.

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

Der schnellste Weg dazu ist der Befehl "SELECT INTO", z.

SELECT * INTO #TempTableName
FROM....

Dadurch wird eine neue Tabelle erstellt. Sie müssen sie nicht vorher erstellen.

25
Yuriy Galanter

Das kannst du so machen:

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

Stellen Sie nur sicher, dass die Spalten übereinstimmen, sowohl in der Anzahl als auch im Datentyp.

8
wvdz

Ich persönlich brauchte eine kleine Hand, um herauszufinden, wie man das benutzt.

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
4
bteague

Versuche dies: 

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

Bitte verwenden Sie einen Alias ​​mit x, damit Skript und Ergebnis nicht fehlschlagen. 

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

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

Das ist möglich. Versuchen Sie diesen Weg: 

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