2016-06-01 4 views
0

Ich habe eine SQL-Abfrage (Server 2012), die mehrere mit Anweisungen hat, um Berechnungen für die erste Ergebnismenge durchzuführen. Gibt es eine Möglichkeit, eine Einfügung bei jeder Anweisung in eine temporäre Tabelle durchzuführen.Verwenden einer Einfügeanweisung mit mehreren Antworten

Ich kann dann eine Auswahl am Ende durchführen, um meine Ergebnisse in einem schönen Format zu sehen.

Hier ist ein Beispiel für den SQL-Code. Die echte Abfrage ist sehr lang, also wollte ich sie nicht posten. Wenn es einen ganz anderen Weg gibt, bin ich ganz Ohr.

with tce as (Select cash from sometable), 
test1 as (((select * from tce) * 100) as morecash), 
test 2 as (((select * from test1) * 100) as evenmorecash) 
+0

Erste - die 'WITH' Sie beziehen sich auf einen CTE oder Common Table Expression. Dies ist eine Fensterfunktion und kann je nach Schreibweise genauso schlecht funktionieren wie eine Skalarfunktion - also Vorsicht! Ohne Ihren Code zu sehen, gibt es für niemanden hier die Möglichkeit, Ihnen zu sagen, was Ihr bester Fall ist oder nicht. Auch dann kennen wir Ihr System, die allgemeine Auslastung, die Anzahl der Benutzer, die Server-/Datenbankeinstellungen (Parallelität, Ablaufverfolgungsflags usw.) nicht. –

+0

Ist das überhaupt gültige Syntax? (Wählen Sie * aus tce) * 100 – Paparazzi

+0

warum fügen Sie jeden cte in eine temporäre Tabelle ein? Warum nicht einfach eine Auswahl von ihnen treffen? –

Antwort

3

einfach erweitern Sie Ihre CTEs in temporäre Tabelle Einsätze:

-- Query 1 
SELECT cash 
INTO #temp1 
FROM sometable; 

-- Query 2 
SELECT cash * 100 as morecash 
INTO #temp2 
FROM #temp1 

-- Query 3 
SELECT morecash * 100 as evenmorecash 
INTO #temp3 
FROM #temp2; 

-- Output 
SELECT * 
FROM #temp3;