根据选择相同的表格进行更新 - AGAIN和AGAIN

Blu*_*ain 3 t-sql sql-server

在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'
;
Run Code Online (Sandbox Code Playgroud)

有没有使用CURSOR解决这个问题的人并循环表?

mar*_*c_s 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'
;
Run Code Online (Sandbox Code Playgroud)

基本上,您在两个表之间定义了一个JOIN(两者都是同一个表),然后您定义了如何更新t1基于列的列t2