分配值以及数据检索

时间:2012-09-14 09:32:43

标签: sql sql-server sql-server-2008 tsql

有没有办法将值分配给变量和选择sql中的列。我需要根据变量计算并选择表中的列。变量的值根据表中的另一列而变化。

var @BeginValue 表格中的列:ReducedBy

我的初始开始值存储在@BeginValue中。该表已经减少了,这是我的开始值应该减少的一个因素。因此,当我选择时,第一个记录的beginvalue将是@BeginValue而@EndValue应该是@BeginValue = @BeginValue - reducedBy。它像这样继续,就像我表中的记录数一样多。

结果集必须如下: @Begin = 10

Begin End ReducedBy 
10     8    2
 8     6    2
 6     5    1

有没有办法可以在不使用游标或多个更新语句的情况下实现此目的。

2 个答案:

答案 0 :(得分:1)

您无法在返回结果集的查询中进行分配。最接近的是将结果存储在表变量中。然后你可以对该表进行计算,并将其作为结果集返回:

-- Store results in table variable
declare @tbl table (id int, col1 int, ...)

insert  @tbl
        (id, col1, ...)
select  id
,       col1
,       ...
from    ... your query here ...

-- Assign variable
select  @YourVariable = ... your computation here ...
from    @tbl

-- Return result set
select  *
from    @tbl

答案 1 :(得分:0)

如果你的问题是

  

我可以吗...

SELECT @a = field, field2 from table
     

并获取结果集并设置@a的值

然后答案是否定的,而不是单一陈述。