web-dev-qa-db-fra.com

Comment trouver la différence entre deux données de colonnes?

J'ai une table temporaire avec deux colonnes de données entières, je veux trouver la différence entre deux colonnes dans la 3e colonne.

#TEMP1

Present   previous
59           88
75           75
45           45
77           88
09           08

#temp2

Difference
 29
 0
 0
 11 
 -1

Est-ce possible ??

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

ou

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

Oui, vous pouvez sélectionner les données, calculer la différence et insérer toutes les valeurs dans l'autre tableau:

insert into #temp2 (Difference)
select previous - Present
from #TEMP1
6
Guffa

SI la table est un alias t

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

Il existe de nombreuses façons de le faire (et je vous encourage à les rechercher car elles seront généralement plus efficaces), mais la façon la plus simple de le faire est d'utiliser une opération non définie pour définir la valeur de la troisième colonne:

SELECT
    t1.previous
    ,t1.present
    ,(t1.present - t1.previous) as difference
FROM #TEMP1 t1

Notez que ce style de sélection est considéré comme une mauvaise pratique car il nécessite que le plan de requête resélectionne la valeur des deux premières colonnes pour déterminer logiquement la troisième (une violation de la théorie des ensembles sur laquelle SQL est basé). Bien que ce soit plus compliqué, si vous prévoyez d'utiliser ceci pour évaluer plus que les valeurs que vous avez répertoriées dans votre exemple, j'examinerais en utilisant une clause APPLY. http://technet.Microsoft.com/en-us/library/ms175156 (v = sql.105) .aspx

2
Daniel King