-2

同じ行の別の列の値が一時テーブルの値と等しい場合、列に1を追加しようとしています。以下はコードです。ストアドプロシージャからコードを実行すると、一時テーブルに表示される列だけでなく、すべての列に1が追加されます。誰かがクエリに何か問題があると思いますか?

DECLARE @LineTable TABLE (
TempLineNumber FLOAT)


INSERT @LineTable
SELECT DocumentNumber
FROM   chargebackdetailtemptable
GROUP  BY DocumentNumber
HAVING Count(*) > 1

UPDATE ChargebackDetailTempTable
SET    LineNumber = (SELECT Max(LineNumber) + 1
                     FROM   ChargebackDetailTempTable c
                            LEFT OUTER JOIN @LineTable c2
                              ON c.DocumentNumber = c2.TempLineNumber
                     WHERE  c.DocumentNumber IS NOT NULL
                            AND c2.TempLineNumber IS NOT NULL) 
4

1 に答える 1

0
UPDATE ChargebackDetailTempTable
SET LineNumber = LineNumber + 1
FROM ChargebackDetailTempTable
INNER JOIN @LineTable lt ON lt.DocumentNumber = ChargebackDetailTempTable.DocumentNumber
WHERE lt.DocumentNumber IS NOT NULL

更新ステートメントで結合を使用できます。行番号または何かを+1しているかどうかはわかりませんでした(上記の質問のサブクエリのようにltエイリアスされています)。c2いずれにせよ、これはあなたがなりたい場所にあなたを連れて行くはずです。

于 2012-11-13T20:55:22.213 に答える