it-swarm.com.de

Wie finde ich den Unterschied zwischen zwei Spaltendaten?

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 ??

12
vision
select previous, Present, previous-Present as Difference from tablename

oder

select previous, Present, previous-Present as Difference from #TEMP1
20
Mujah Maskey

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
6
Guffa

WENN die Tabelle ein Alias ​​ist t

SELECT t.Present , t.previous, t.previous- t.Present AS Difference
FROM   temp1 as t
4
Vaibs_Cool

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

2
Daniel King