Запустить обновление с тремя регистрационными выражениями? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь обновить 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'.

Если я избавлюсь от ОБНОВЛЕНИЯ и сделаю ВЫБОР, я получу это.

ID_ISIN   ID_SEDOL   ID_CUSIP
NULL      2450915    448814DM2

Я пытаюсь взять эти 3 предмета и поместить их в другую таблицу, котораяСуммируем вещи, основанные на этих отношениях: CPDG.asset_id = CW.asset_id

Данные, с которыми я работаю, очень дрянные, иначе мне не пришлось бы делать этот шаг.

1 Ответ

0 голосов
/ 07 ноября 2019

Я бы действительно пересмотрел то, что вы пытаетесь достичь, так как в этом запросе много ошибок. Я не уверен, почему вы пытаетесь установить каждый столбец дважды (среди других ошибок), и вы не дали нам то, что вы ожидаете. Однако я отвечу следующей попыткой понять и очистить ваш код ( Отказ от ответственности: это не проверено ):

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;

Я бы такжесоветуем работать с тестовыми данными (может быть, через временные таблицы или что-то в этом роде?), так как этот ответ основан на очень ограниченной информации. Я также изучил бы комментарии всех остальных к вашему первоначальному сообщению, поскольку все они внесли отличные предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...