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'
;

基本上,您在两个表之间定义一个 JOIN(实际上都是同一个表),然后定义如何t1根据来自的列更新列t2

于 2012-06-13T06:54:21.297 回答