如何使用Insert Into将字段分为两部分?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Insert Into将字段分为两部分?相关的知识,希望对你有一定的参考价值。

我正在尝试使用Insert Into将一个字段分成两个字段。这是我的代码。

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'.
答案

无法创建要插入的条件列列表。您已经指定了可能具有值的所有列,然后有条件地填充它们。因此,您将需要在SELECT语句中使用两个CASE语句来适当地填充这两列。

尝试以下操作(注意:我实际上没有运行此程序,所以请告诉我是否存在任何较小的语法错误)。

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

以上是关于如何使用Insert Into将字段分为两部分?的主要内容,如果未能解决你的问题,请参考以下文章

SELECT INTO 和 INSERT INTO SELECT比较

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

insert into 插入数据问题

如何仅返回日期字段上的最新记录,分为两部分

oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解