从col1中减去col2

时间:2011-03-10 14:54:18

标签: sql sql-server sql-server-2005 tsql

是否可以计算输出列的值?

例如,如果我有以下

select col1, col2
from table1

不使用存储过程,是否可以执行此类操作

伪代码

select col1 as figure1, col2 as figure2, figure2 - figure1
from table1

编辑1:

我之所以不尝试col2-col1,只是因为col1和col2已经通过计算创建,我不想在计算上加倍。

8 个答案:

答案 0 :(得分:3)

你可以做..

Select col1 as figure1, col2 as figure2, (col2-col1) as figure3
from table1

select figure1, figure2, (figure2-figure1) as figure3
from 
(
select col1 as figure1, col2 as figure2
from table1
)

图1和图2是别名,因此只能通过上面的查询访问它们。它们不是表中的实际列。

如果这是您的实际要求,您绝对不需要存储过程。

答案 1 :(得分:3)

您不能直接使用别名。但是你可以使用cte或子查询

;with cte as
(
  select
    col1 as figure1,
    col2 as figure2
  from table1
)
select
  figure1,
  figure2,
  figure2-figure1 as figure3
from cte

答案 2 :(得分:2)

你可以这样做:

select col1, col2, col1 - col2 
from table

不需要存储过程。

这假设两列的类型相同,否则您可能需要预先投射它们。哦,列需要是一些数字数据类型 - 从varchars中减去文本通常不会很好...

答案 3 :(得分:2)

当然可以。

select col1 as figure1, col2 as figure2, col1 - col2 as subtractions from table1

答案 4 :(得分:1)

不,我不认为上述情况会奏效 但是,以下内容将起作用,您不需要存储过程。

select col1 as figure1, col2 as figure2, col1 - col2 as result 
from table1

答案 5 :(得分:0)

取决于数据类型,但它应该是可能的(假设它们是整数或者您可以执行操作的东西):

SELECT col1, col2, col1-col2 as 'Variance'
FROM Mytable
Where Conditions

答案 6 :(得分:0)

简单地说是。

您可以对数据执行各种数学运算。您有时会偶然发现转换问题,尤其是当您想要将值转换回字符串时。

我遇到的最大的痛苦是使用十进制值时,在尝试将值存储在参数中时可能会出现转换错误,因为它没有定义为足以容纳结果。要记住的事情。

答案 7 :(得分:0)

select col1 as figure1, col2 as figure2, col2 - col1 as figure3 
from table1

肯定会做到这一点,但为了清楚说明,这是一个棘手的问题; - )