sql - 基于不同表列的计算列公式

标签 sql sql-server-2008 calculated-columns

考虑这个表: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/

相关文章:

pandas - 计算 Pandas 中一列的权重

python - 使用右连接和 WHERE IN 子句

sql - 避免在查询中使用 "SELECT TOP 1"和 "ORDER BY"

mysql - 更改表时外键未添加?

sql-server - 如何刷新 SQL Server 中的 C# CLR 代码(程序集)?

asp.net-mvc-3 - 使用函数从表中返回一个值

mysql - MySQL 中的触发(类似)事件计算当前行和上一行的值

php - 根据项目计数修改列跨度

java - 将列和值的 HashMap 存储到 SQL 数据库以获取用户 ID

mysql游标需要很长时间才能执行