考虑这个表:c_const
code | nvalue
--------------
1 | 10000
2 | 20000
和另一个表t_anytable
rec_id | s_id | n_code
---------------------
2 | x | 1
目标是让 s_id
成为基于以下公式的计算列:
rec_id*(select nvalue from c_const where code=ncode)
这会产生一个错误:
Subqueries are not allowed in this context. Only scalar expressions are allowed.
如何使用另一个表的列作为输入来计算此计算列的值?
最佳答案
您可以为此创建一个用户定义的函数:
CREATE FUNCTION dbo.GetValue(@ncode INT, @recid INT)
RETURNS INT
AS
SELECT @recid * nvalue
FROM c_const
WHERE code = @ncode
然后使用它来定义您的计算列:
ALTER TABLE dbo.YourTable
ADD NewColumnName AS dbo.GetValue(ncodeValue, recIdValue)
关于sql - 基于不同表列的计算列公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769007/