2012-03-19 9 views
0

2つの列の結果を2つの変数に割り当てたいとします。カーソルループブロックの中にいくつかの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 

答えて

2

Agreegate関数であるMAXを使用しているときにGroupByを使用する必要があります。

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 

注:クエリで複数の行が返された場合、上記のクエリは失敗します。

関連する問題