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

Posted

技术标签:

【中文标题】如何找到两列数据之间的差异?【英文标题】:How to find difference between two columns data? 【发布时间】:2013-10-09 00:52:08 【问题描述】:

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

#TEMP1

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

#temp2

Difference
 29
 0
 0
 11 
 -1

这可能吗??

【问题讨论】:

【参考方案1】:
select previous, Present, previous-Present as Difference from tablename

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

如果表是别名t

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于如何找到两列数据之间的差异?的主要内容,如果未能解决你的问题,请参考以下文章

如何从两列之间的差异创建新列?

如何计算Python Pandas中两列之间的日期差异[重复]

计算Postgresql中两列之间的运行差异

如何获得 PostgreSQL 中的两个平均值之间的差异,平均值在列上,最终表按两列分组?

MySQL SUM 两列之间差异的值

将小数转换为整数并找出两列之间的差异