ORACLE中聯結是在on後面出現外部子聯結的錯誤,擷取指定日期最近的資料sql

來源:互聯網
上載者:User

將sql語句包含在select (.....) from dual中,就可以了。

邏輯說明:

         單據表體的幣制+表頭開立日期 關聯 匯率維護(原始貨幣代碼、生效日期範圍),擷取轉換率,

然後轉換金額至美元後再進行匯總,得到 發票金額(USD)  ;若關聯不到匯率,則預設以1:1的匯率進行匯總。

擷取指定日期最近的資料sql:

MS SQL SERVER,select * from table_namewhere abs(column_name-convert(datetime,'20081220',112)) in (select min(abs(column_name-convert(datetime,'20081220',112))) from table_name)ORACLEselect * from table_namewhere abs(column_name-to_date('20081220','yyyymmdd')) in (select min(abs(column_name-to_date('20081220','yyyymmdd'))) from table_name)

oracle中的預存程序:

CREATE OR REPLACE PROCEDURE COST_BILL_INSURE_TOTAL_CALC/*************************************************************************  *************************進出保險統計表************************************  *************************AUTHOR:XIN***************************************/(V_EMS_NO   VARCHAR2, V_I_E_MARK VARCHAR2, V_INPUTER  VARCHAR2, V_REMARK   OUT VARCHAR2) ASBEGIN  --  DELETE FROM AIPTEK_COST_BILL_INSURE_TOTAL T   WHERE T.EMS_NO = V_EMS_NO     AND T.I_E_MARK = V_I_E_MARK;  --  INSERT INTO AIPTEK_COST_BILL_INSURE_TOTAL    (I_E_MARK,     BILL_NO,     INVOIC_NO,     G_NAME,     G_QTY,     G_TOTAL,     INSURE_G_TOTAL,     INSURE_RATE,     INSURE_COST,     TRAF_MODE,     TO_FROM_ADD,     TRADE_MODE,     CUS_CODE,     CREATE_DATE,     START_ADD,     TRAF_TOOLS,     EMS_NO,     INPUT_ER)    SELECT V_I_E_MARK,           M.BILL_NO,           M.INVOIC_NO,           MAX(M.G_NAME),           M.TOTAL_QTY,           SUM(M.G_TOTAL * NVL(I.TAX, 1)) USD,           SUM(M.G_TOTAL * NVL(I.TAX, 1)) * 1.1,           0.00015,           SUM(M.G_TOTAL * NVL(I.TAX, 1)) * 1.1 * 0.00015,           M.TRAF_MODE,           M.TO_FROM_ADD, --目的地           M.TRADE_MODE, --貿易方式           M.CUS_CODE, --報關行           M.CREATE_DATE, --開立日期           '吳江',           '',           V_EMS_NO,           V_INPUTER      FROM AIPTEK_VIEW_BILL_MANAGE M      LEFT JOIN (SELECT T.ORG_CURR, T.EFF_DATE, T.TAX FROM INFO_CORP_TAX T) I ON I.EFF_DATE IN                                                                                 (SELECT M.CREATE_DATE -                                                                                         (select min(abs(EFF_DATE -                                                                                                         M.CREATE_DATE))                                                                                            from INFO_CORP_TAX)                                                                                    FROM DUAL)                                                                             AND M.G_CURR =                                                                                 I.ORG_CURR         WHERE M.EMS_NO = V_EMS_NO       AND M.I_E_MARK = V_I_E_MARK       AND M.Trade_Mode = '0615'       AND M.ID IS NOT NULL     GROUP BY M.OID,              M.BILL_NO,              M.INVOIC_NO,              M.TOTAL_QTY,              M.TRAF_MODE,              M.TO_FROM_ADD, --目的地              M.TRADE_MODE, --貿易方式              M.CUS_CODE, --報關行              M.CREATE_DATE; --開立日期  COMMIT;EXCEPTION  WHEN OTHERS THEN    V_REMARK := SQLCODE || SUBSTR(SQLERRM, 1, 200) ||                'ERROR:執行預存程序COST_BILL_INSURE_TOTAL_CALC時出錯';    ROLLBACK;END COST_BILL_INSURE_TOTAL_CALC;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.