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 ??
select previous, Present, previous-Present as Difference from tablename
ou
select previous, Present, previous-Present as Difference from #TEMP1
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
SI la table est un alias t
SELECT t.Present , t.previous, t.previous- t.Present AS Difference
FROM temp1 as t
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