Ich habe eine temporäre Tabelle mit zwei Spalten mit ganzzahligen Daten. Ich möchte den Unterschied zwischen zwei Spalten in der dritten Spalte herausfinden.
#TEMP1
Present previous
59 88
75 75
45 45
77 88
09 08
#temp2
Difference
29
0
0
11
-1
Ist das möglich ??
select previous, Present, previous-Present as Difference from tablename
oder
select previous, Present, previous-Present as Difference from #TEMP1
Ja, Sie können die Daten auswählen, die Differenz berechnen und alle Werte in die andere Tabelle einfügen:
insert into #temp2 (Difference)
select previous - Present
from #TEMP1
WENN die Tabelle ein Alias ist t
SELECT t.Present , t.previous, t.previous- t.Present AS Difference
FROM temp1 as t
Es gibt viele Möglichkeiten, dies zu tun (und ich empfehle Ihnen, sie nachzuschlagen, da sie im Allgemeinen effizienter sind), aber die einfachste Möglichkeit besteht darin, den Wert der dritten Spalte mit einer nicht gesetzten Operation zu definieren:
SELECT
t1.previous
,t1.present
,(t1.present - t1.previous) as difference
FROM #TEMP1 t1
Beachten Sie, dass diese Art der Auswahl als schlechte Praxis angesehen wird, da der Abfrageplan den Wert der ersten beiden Spalten erneut auswählen muss, um den dritten logisch zu bestimmen (eine Verletzung der Settheorie, auf der SQL basiert). Obwohl es komplizierter ist, wenn Sie beabsichtigen, damit mehr als die in Ihrem Beispiel aufgeführten Werte auszuwerten, würde ich dies mit einer APPLY-Klausel untersuchen. http://technet.Microsoft.com/en-us/library/ms175156 (v = sql.105) .aspx