3

Microsoft SQL Server の場合:

この質問を何度か見ましたが、誰も問題を解決していません。

UPDATE theTable t1
SET t1.col2 =
    (SELECT (10 * (col1 + col2))
     FROM theTable t2
     WHERE t1.busRelAccount = t2.busRelAccount
     AND t2.rowName = 'POS'
    )
WHERE t1.busRelAccount = t2.busRelAccount
AND t1.rowName = 'INVENTORY'
;

CURSOR を使用せずにこの問題を解決し、テーブルをループした人はいますか?

4

1 に答える 1

6

あなたが何をしようとしているのか 100% 確信できるわけではありませんが、ほとんどの場合、UPDATEステートメントをもっと簡単に書くことができます - 次のように:

UPDATE t1
SET t1.col2 = 10 * (t2.col1 + t2.col2)
FROM theTable t1
INNER JOIN theTable t2 ON t1.busRelAccount = t2.busRelAccount
WHERE 
    t1.rowName = 'INVENTORY'
    AND t2.rowName = 'POS'
;

基本的に、2 つのテーブル間で JOIN を定義し (どちらも実際には同じテーブルです)、次に、列にt1基づいて列を更新する方法を定義します。t2

于 2012-06-13T06:54:21.297 に答える