我正在尝试将名为Multiplier的新列添加到名为Trades的现有表中。此列的行值将取决于交易表上名为类型的另一列。如果Type不是“Equity”,“Corp”或“Option”,则需要从另一个名为ContractSize的表中查找该值。最后,我希望Multiplier列的数据类型为十进制(7,3 。)我的代码是:SQL:添加一个基于CASE表达式的新列,并从另一个表中查找值
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'
Msg 102,Level 15,State 1,Line 12 '''附近的语法不正确。
Some gu不胜感激。
您是否试图将此创建为表格中的“已计算”列?或者只是在创建列后尝试设置现有数据的初始值? –