如何找到两列数据之间的差异?

时间:2013-10-02 15:09:27

标签: sql-server tsql sql-server-2008-r2 addition temp-tables

我有一个包含两列整数数据的临时表,我希望找到第三列中两列之间的差异。

#TEMP1

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

#temp2

Difference
 29
 0
 0
 11 
 -1

这可能吗?

4 个答案:

答案 0 :(得分:19)

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

select previous, Present, previous-Present as Difference from #TEMP1

答案 1 :(得分:6)

是的,您可以选择数据,计算差异,并在另一个表中插入所有值:

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

答案 2 :(得分:4)

如果该表是别名t

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

答案 3 :(得分:2)

有很多方法可以做到这一点(我鼓励你查看它们,因为它们通常会更有效),但最简单的方法是使用非设置操作来定义第三列的值:

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

请注意,这种选择方式被认为是不好的做法,因为它要求查询计划重新选择前两列的值以逻辑确定第三列(违反SQL所基于的集合论)。虽然它更复杂,但是如果您打算使用它来评估超过示例中列出的值,我会调查使用APPLY子句。 http://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx