-2

我正在尝试根据 3 个案例表达式更新表中的 3 个字段。这是我的非工作代码。

UPDATE MyPrices
  SET ID_ISIN = ID_ISIN
  SET ID_SEDOL = ID_SEDOL
  SET ID_CUSIP = ID_CUSIP
  MAX(CASE WHEN CW.id_cd = 'ISN' THEN CW.id_number ELSE NULL END) As ID_ISIN,
  MAX(CASE WHEN CW.id_cd = 'SED' THEN CW.id_number ELSE NULL END) As ID_SEDOL,
  MAX(CASE WHEN CW.id_cd = 'CSP' THEN CW.id_number ELSE NULL END) As ID_CUSIP
FROM CPDG As CPDG
    INNER JOIN CW As CW
    ON CPDG.asset_id = CW.asset_id
GROUP BY CW.asset_id;

我尝试了几个不同的版本,我不断收到错误说

'SET' 附近的语法不正确。

如果我摆脱 UPDATE 并执行 SELECT,我会得到这个。

ID_ISIN   ID_SEDOL   ID_CUSIP
NULL      2450915    448814DM2

我试图抓住这 3 个项目并将它们推到另一个表中,该表根据这种关系总结了一些事情:CPDG.asset_id = CW.asset_id

我正在使用的数据非常糟糕,否则我不必执行此步骤。

4

1 回答 1

0

我真的会重新考虑您要实现的目标,因为此查询中有很多错误。我不确定您为什么要尝试将每列设置两次(以及其他错误),并且您没有给我们您所期望的。但是,我将通过以下尝试来理解和清理您的代码来回答(免责声明:这是未经测试的):

UPDATE MyPrices
    SET ID_ISIN = MAX(CASE WHEN CW.id_cd = 'ISN' THEN CW.id_number ELSE NULL END),
    ID_SEDOL = MAX(CASE WHEN CW.id_cd = 'SED' THEN CW.id_number ELSE NULL END),
    ID_CUSIP = MAX(CASE WHEN CW.id_cd = 'CSP' THEN CW.id_number ELSE NULL END)
FROM CPDG As CPDG
    INNER JOIN CW As CW
    ON CPDG.asset_id = CW.asset_id;

我还建议针对测试数据运行(可能通过临时表或其他方式?),因为这个答案基于非常有限的信息。我还会查看其他人对您最初帖子的评论,因为他们都提出了很好的建议。

于 2019-11-07T20:22:49.877 回答