我试图将一个名为Multiplier的新列添加到一个称为Trades的现有表中。该列的行值将取决于“交易”表上称为“类型”的另一列。如果Type是“ Equity”,“ Corp”或“Option”以外的任何其他值,则需要从另一个名为ContractSize的表中查找该值。最后,我希望“乘数”列的数据类型为十进制(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行’)’附近的语法不正确。
一些指导是非常感谢。
分两步执行此操作:
ALTER TABLE Portfolio.Trades ADD Multiplier decimal(7,3); UPDATE T SET Multiplier = (CASE WHEN T.Type = 'Equity' Then 1 WHEN T.Type = 'Corp' Then 0.1 WHEN T.Type = 'Option' Then 100 ELSE (SELECT CS.ContractSize FROM Portfolio.ContractSize CS WHERE T.Identifier = CS.ContractSize) END) FROM Portfolio.Trades T;
我猜想ON/ correlation条件不正确。如果正确,则可以执行以下操作:
ON
UPDATE T SET Multiplier = (CASE WHEN T.Type = 'Equity' Then 1 WHEN T.Type = 'Corp' Then 0.1 WHEN T.Type = 'Option' Then 100 ELSE T.Identifier) END) FROM Portfolio.Trades T;
甚至只是将其添加为计算列。