我有2个SQL表,其中一个表包含源列和目标列,另一个表包含源值的转换逻辑。我需要应用转换逻辑并更新目标列。基于SQL存储在另一列的SQL Server更新列
表1
ID | PreVal |PostVal
1 | 5 |
1 | 6 |
1 | 7 |
2 | 10 |
2 | 15 |
表2 - 转换逻辑
ID | Logic
1 | case when PreVal < 6 then 1 else 0 end
2 | case when PreVal < 12 then 1 else 0 end
是否可以通过连接两个表(而不是通过在通过每个ID去构建动态SQL都只是一个普通的更新语句光标)实现以下输出
ID | PreVal |PostVal
1 | 5 | 1
1 | 6 | 0
1 | 7 | 0
2 | 10 | 1
2 | 15 | 0
为您的H非常感谢ELP。
_通过连接两个表(而不是通过遍历游标中的每个ID构建动态SQL)来实现下面的输出_否可能只有一个通用更新语句,您需要为此使用动态sql。 – Tanner
如果您更改逻辑表数据,使其只具有PreVal的值(第一个表的值必须小于),那么是的。但是,你无法按照原样对转换表进行任何操作。 – Matthew
@Tanner我不介意动态SQL,但我不希望在游标中通过ID来标识ID,因为此表利用了列存储索引。 –