当值在临时表中时,将sql列更新为1

时间:2012-11-13 20:51:11

标签: sql-server sql-update

如果同一行中另一列的值等于临时表中的值,我试图将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) 

1 个答案:

答案 0 :(得分:0)

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

您可以在更新语句中使用联接。我不确定你是不是来自lt的行号或某些内容(在上面问题的子查询中别名为c2)。无论哪种方式,这应该可以让你到达目的地。