2016-03-01 114 views
-1

獲取ORA-00936:在以下查詢中缺少表達式。 請幫忙。ora-00936插入語句時缺少表達式

INSERT INTO TT_FX_LADDER_INFO(DEAL_NUM,SPOT_RATE,FORWARD_RATE,LBS_RATE,DF_CCY1,DF_CCY2,FX_TYPE,TYPE,TRADING_BOOK_FBO_ID_NUM,ENTITY_FBO_ID_NUM,POS_CCY_PAIR,AS_ON_DATE,DECOMPOSE_DATE,CCY_ONE_AMOUNT,CCY_TWO_AMOUNT,CCY_1,CCY_2,IS_FX_MERCHANT_TRADE) VALUES 
(
    SELECT '0','0','0','0','0','0','FWD','OPENING POSITION',TRADING_BOOK_FBO_ID_NUM,ENTITY_FBO_ID_NUM,CURRENCY_PAIR,LADDER_DATE,DECOMPOSE_DATE,SUM(CCY_ONE_AMOUNT) CCY_ONE_POSITION,SUM(CCY_TWO_AMOUNT) CCY_TWO_POSITION,CCY_1,CCY_2,IS_FX_MERCHANT_TRADE 
    FROM 
    (
     SELECT hdg.TRADING_BOOK_FBO_ID_NUM TRADING_BOOK_FBO_ID_NUM,hdg.ENTITY_FBO_ID_NUM,hdg.CURRENCY_PAIR, 
     TO_CHAR(elem.LADDER_DATE,'DD-MM-YYYY') LADDER_DATE, 
     TO_CHAR(elem.LADDER_DATE,'DD-MM-YYYY') DECOMPOSE_DATE 

     FROM TT_FX_HDG hdg,TT_FX_HDG_ELEMS elem 
     WHERE elem.DEAL_NUM = hdg.DEAL_NUM 
     AND hdg.FX_TYPE = 'FWD' 

    ) 
    group by TRADING_BOOK_FBO_ID_NUM,ENTITY_FBO_ID_NUM,CURRENCY_PAIR,LADDER_DATE,DECOMPOSE_DATE,CCY_1,CCY_2,IS_FX_MERCHANT_TRADE 
); 

沒有插入到子句的內部查詢工作正常。

幫助將非常感激。

+0

請妥善格式化您的查詢。 – FallAndLearn

+1

請格式化,對眼睛有害:D – Chendur

+0

可以共享您的表格模式,以便我可以在本地調試它 – FallAndLearn

回答

0

只需刪除values。使用insert . . . select時沒有必要。因此,假設所有其他排隊:

INSERT INTO TT_FX_LADDER_INFO(DEAL_NUM, SPOT_RATE,FORWARD_RATE,LBS_RATE,DF_CCY1,DF_CCY2,FX_TYPE,TYPE,TRADING_BOOK_FBO_ID_NUM,ENTITY_FBO_ID_NUM,POS_CCY_PAIR,AS_ON_DATE,DECOMPOSE_DATE,CCY_ONE_AMOUNT,CCY_TWO_AMOUNT,CCY_1,CCY_2,IS_FX_MERCHANT_TRADE 
          ) 
    SELECT '0','0','0','0','0','0', 'FWD', 'OPENING POSITION', 
      TRADING_BOOK_FBO_ID_NUM, ENTITY_FBO_ID_NUM, CURRENCY_PAIR, 
      LADDER_DATE, DECOMPOSE_DATE, 
      SUM(CCY_ONE_AMOUNT) as CCY_ONE_POSITION, 
      SUM(CCY_TWO_AMOUNT) as CCY_TWO_POSITION, 
      CCY_1,CCY_2,IS_FX_MERCHANT_TRADE 
    FROM (SELECT hdg.TRADING_BOOK_FBO_ID_NUM TRADING_BOOK_FBO_ID_NUM, hdg.ENTITY_FBO_ID_NUM, hdg.CURRENCY_PAIR, 
       TO_CHAR(elem.LADDER_DATE,'DD-MM-YYYY') as LADDER_DATE, 
       TO_CHAR(elem.LADDER_DATE,'DD-MM-YYYY') as DECOMPOSE_DATE 
      FROM TT_FX_HDG hdg JOIN 
       TT_FX_HDG_ELEMS elem 
       ON elem.DEAL_NUM = hdg.DEAL_NUM AND hdg.FX_TYPE = 'FWD' 
     ) x 
    GROUP BY TRADING_BOOK_FBO_ID_NUM, ENTITY_FBO_ID_NUM, CURRENCY_PAIR, 
       LADDER_DATE, DECOMPOSE_DATE, CCY_1,CCY_2, 
       IS_FX_MERCHANT_TRADE; 

我也建議:

  • 編寫查詢,所以你可以閱讀他們 - 分手不可能排長逗號後使用空格。
  • 學習如何使用正確的JOIN語法。簡單的規則:從不FROM子句中使用逗號。
  • 不要在數字常量周圍放置單引號。在某些情況下(雖然不在這裏),這可能會導致性能問題。
  • 定義列別名時使用as
0

您的查詢完全錯誤。發現一些錯誤。

SUM(CCY_ONE_AMOUNT) CCY_ONE_POSITION,SUM(CCY_TWO_AMOUNT) CCY_TWO_POSITION,CCY_1,CCY_2,IS_FX_MERCHANT_TRADE 

上面的列未在內部select語句中選擇。因此它不會工作。