计算基于另一个计算列列?
-
12-09-2019 - |
题
我有一个计算列称为Cost
返回钱。
我想有一个返回值(Cost * 2
)另一列,但它不会让我。
解决方案
计算列不能引用其它计算列。虽然你应该能够只是重复你想引用的表达。 从MSDN :
一个计算列由能够在同一个表使用其它列的表达式来计算。该表达式可以是一个的是非计算强>列名,常数,函数,以及这些的由一个或多个运算符连接的任意组合。表达不能为子查询。
我还要补充一点,如果这是工作,你会希望,那么将会出现各种新问题,你必须处理。目前,在许多列/行的更新发生在平行和原子。
因此,它是没有意义的在你的计算中使用计算列,因为它不会有完全相同的值...但。如果有的话,你会使用旧的,未更新的值。
如果你真的想避免重复表达,你的可能的一个触发做到这一点,但我强烈建议您不可以做到这一点。触发器是没有什么好玩的,只能由非常精明的人在少数情况下使用。
其他提示
您在表中具有以定义它靠基部列
computed_column_expression是一种 表达定义的值 计算列。计算列是 虚拟列,它是不 物理存储在表中,除非 所述列标记仍然存在。该 列被从表达式计算 使用其他列在同一 表。例如,计算列 可以有定义:成本价 *数量。该表达式可以是是非计算列名,常量 函数,变量,和任何 这些的组合由一个连接 或更多的运营商。表达方式 不能是子查询或包含别名 数据类型。
虽然你可以重构他们都使用相同的标量UDF(通过在所有同列)为了方便维护和确保逻辑一致性,性能损失将是巨大的,而我只用标量UDF作为最后的手段。
不隶属于 StackOverflow