是否可以计算输出列的值?
例如,如果我有以下
select col1, col2
from table1
不使用存储过程,是否可以执行此类操作
伪代码
select col1 as figure1, col2 as figure2, figure2 - figure1
from table1
编辑1:
我之所以不尝试col2-col1,只是因为col1和col2已经通过计算创建,我不想在计算上加倍。
答案 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
肯定会做到这一点,但为了清楚说明,这是一个棘手的问题; - )