-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 回答