Как я могу разделить одно поле на два, используя Вставить в? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь разделить одно поле на два, используя команду «Вставить в». Вот мой код.

INSERT INTO Pricing (ID_GLOBAL, 
    PRICING_SOURCE,
    PX_BID,
    PX_ASK,
    PX_HIGH,
    PX_LOW,
    PX_OPEN,
    CASE WHEN W.id_cd = 'ISN' THEN ID_ISN = W.id_number
         ELSE ID_SED = W.id_number 
         END)
Select C.asset_id,  
    C.price_source, 
    C.bid_price, 
    C.ask_price, 
    C.high, 
    C.low, 
    C.open_price, 
    W.id_cd, 
    W.id_number
From RRS As C
INNER JOIN ERS As W
ON C.asset_id = W.asset_id

Все работало нормально, прежде чем я поместил CASE туда. Теперь я получаю эту ошибку:

Incorrect syntax near 'CASE'.

1 Ответ

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

Нет способа создать условный список столбцов для вставки. Вы должны указать все столбцы, для которых у вас могут быть значения, а затем заполнить их условно. Итак, вам нужно использовать два оператора CASE в вашем операторе SELECT, чтобы заполнить эти два столбца соответствующим образом.

Попробуйте следующее (примечание: я на самом деле не запускал это, поэтому дайте мне знать, если есть какой-нибудь второстепенный синтаксисошибки).

INSERT INTO Pricing (ID_GLOBAL, 
    PRICING_SOURCE,
    PX_BID,
    PX_ASK,
    PX_HIGH,
    PX_LOW,
    PX_OPEN,
    ID_ISN,
    ID_SED)
Select C.asset_id,  
    C.price_source, 
    C.bid_price, 
    C.ask_price, 
    C.high, 
    C.low, 
    C.open_price, 
    W.id_cd, 
    CASE WHEN W.id_cd = 'ISN' THEN W.id_number ELSE NULL END,
    CASE WHEN W.id_cd != 'ISN' THEN W.id_number ELSE NULL END
From RRS As C
INNER JOIN ERS As W
ON C.asset_id = W.asset_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...