【发布时间】:2017-07-08 06:54:41
【问题描述】:
我正在尝试将名为 Multiplier 的新列添加到名为 Trades 的现有表中。此列的行值将取决于 Trades 表中名为 Type 的另一列。如果 Type 不是“Equity”、“Corp”或“Option”,则需要从另一个名为 ContractSize 的表中查找该值。最后,我希望 Multiplier 列的数据类型为十进制(7,3 ). 我的代码是:
ALTER TABLE Portfolio.Trades
ADD Multiplier decimal(7,3) AS
(
CASE
WHEN Type = 'Equity' Then 1
WHEN Type = 'Corp' Then 0.1
WHEN Type = 'Option' Then 100
ELSE
(SELECT ContractSize FROM Portfolio.ContractSize CS
JOIN Portfolio.Trades T
ON T.Identifier = CS.ContractSize)
)
我在这段代码中遇到两个错误:
消息 156,级别 15,状态 1,行 2
关键字“AS”附近的语法不正确。
消息 102,第 15 级,状态 1,第 12 行
')' 附近的语法不正确。
非常感谢一些指导。
【问题讨论】:
-
您是否尝试将其创建为表格中的“计算”列?还是只是在创建列后尝试为现有数据设置初始值?
标签: sql sql-server case alter-table