表格结构
TableA
+---------+--------+--------+
| ColA1 | ColA2 | ColA3 |
+---------+--------+--------+
| 1 | B1 | |
+---------+--------+--------+
| 2 | B2 | |
+---------+--------+--------+
TableB
+---------+--------+--------+
| ColB1 | ColB2 | ColB3 |
+---------+--------+--------+
| 1 | B1 | ColC2 |
+---------+--------+--------+
| 2 | B2 | ColC3 |
+---------+--------+--------+
TableC
+---------+--------+--------+
| ColC1 | ColC2 | ColC3 |
+---------+--------+--------+
| 1 | 100 | 1000 |
+---------+--------+--------+
| 2 | 200 | 2000 |
+---------+--------+--------+
此处,需要使用基于ColA1 = ColC1的TableC中的不同列值更新列ColA3(TableA)。 ColA3可能具有来自ColC2或ColC3的值(需要使用的列在ColB3(TableB)中配置)。
对于1(ColA1)行,ColA3为100,对于2行(ColA1),ColA3为2000
由于TableC列名被指定为ColB3列值,我尝试了动态SQL。
DECLARE @Query NVARCHAR(MAX)
SET @Query = N'UPDATE TableA SET ColA3 = (SELECT '+ tabB.ColB3 +' FROM TableC WHERE ColC1 = tabA.ColA1) FROM TableA tabA JOIN TableB tabB ON tabA.ColA2 = tabB.ColB2';
EXECUTE sp_executesql @Query
但不知道如何获取TableC列名而不是“tabB.ColB3”。请同样建议我。
感谢。
答案 0 :(得分:0)
更新a SET ColA3 =例如b.colb3 =' ColC2'那么c.ColC2当b.colb3 =' ColC3'那么c.ColC3结束 从表格a INNER JOIN tableb b ON a.ColA2 = b.ColB2 INNER JOIN tablec c ON a.cola1 = c.colc1