将结果列分配给变量

时间:2012-03-19 19:01:49

标签: sql sql-server-2008 tsql

我想将两列的结果分配给两个变量。我在游标循环块中有几个TSQL语句。当@currentId(当前行Id)等于tablea中的max(col1)时,我想得到tableb.col2的值。

SELECT MAX(col1), b.[col2] from tablea ta JOIN tableb tb on ta.id = tb.id
WHERE ta.id = @currentId

上述方法当然不起作用。另外,我不知道如何检索col1和col2的值。数据类型是:

col1 int
col2 bit

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您需要使用GroupBy,因为您正在使用MAX,这是一个Agreegate函数。

Declare @valCol1 INT, @valCol2 INT

    SELECT @valCol1 = MAX(col1), @valCol2 = b.[col2] from tablea ta JOIN tableb tb on ta.id = tb.id
    WHERE ta.id = @currentId

PRINT @valCol1
PRINT @valCol2

注意:如果查询返回多行,则上述查询将失败。