2016-08-02 102 views
1

我試圖在MS Access中創建一個傳遞查詢。查詢通過ODBC連接到Oracle數據庫。MS Access傳遞查詢到Oracle VIA ODBC

我的查詢在SQL Developer中運行良好,但它包含CASE (...) END構造。 由於我發現here,Oracle ODBC驅動程序有一個問題end解釋。我得到一個錯誤。

有沒有辦法解決這個問題?

我的查詢:

SELECT 
    CASE 
    WHEN PHORGEN.NR_wniosku LIKE 'PHR%' 
    THEN 'text1' 
    WHEN PHORGEN.NR_wniosku LIKE 'PBR%' 
    THEN 'text2' 
    ELSE 'text3' 
    END field1, 
    CASE 
    WHEN PHORGEN.NR_wniosku IS NULL 
    THEN reklcomp.solution_date 
    ELSE 
     CASE 
     WHEN phorsol.OPIS_ROZWIAZANIA = '3' 
     THEN rekldet.SOLUTION_SENDING_DATE 
     ELSE NVL(
      (SELECT MIN(DATA_KSIEGOWANIA) 
      FROM phorbook 
      WHERE POWOD_KSIEGOWANIA = '1' 
      AND Nr_Wniosku   = PHORGEN.Nr_Wniosku 
     ),rekldet.SOLUTION_SENDING_DATE) 
     END 
    END field2 
FROM rgen 
JOIN reklcomp 
ON rgen.UIDINSTANCEID = reklcomp.UIDINSTANCEID 
JOIN rekldet 
ON rgen.UIDINSTANCEID = rekldet.UIDINSTANCEID 
JOIN reklclient 
ON rgen.UIDINSTANCEID = reklclient.UIDINSTANCEID 
LEFT JOIN phorgen 
ON RGEN.NR_WNIOSKU = PHORGEN.NUMER_OAR 
LEFT JOIN phorsol 
ON PHORGEN.UIDINSTANCEID = phorsol.UIDINSTANCEID 
+0

向我們顯示查詢,我們可以幫助以另一種方式寫它,而不使用'case'' end' –

+0

我編輯了問題並添加了查詢。 –

+0

是否有幫助? –

回答

0

我找到了解決方案。這是非常簡單的:) Oracle ODBC驅動程序不允許在查詢中單詞END後面使用分號。所以我刪除了傳遞查詢定義中的分號,它起作用了! 謝謝隊友的任何答案。

1

您還可以使用解碼功能。

我不熟悉ORACLE SQL,但我有一些時間搜索,它應該工作,我認爲。

SELECT 
    DECODE(SUBSTR(PHORGEN.NR_wniosku, 1, 3) 
         , 'PHR', 'text1' 
         , 'PBR', 'text2' 
         , 'text3') field1 

    , DECODE(PHORGEN.NR_wniosku 
       , NULL, reklcomp.solution_date 
       , DECODE(phorsol.OPIS_ROZWIAZANIA 
          , '3', rekldet.SOLUTION_SENDING_DATE 
          , NVL((SELECT MIN(DATA_KSIEGOWANIA) 
            FROM phorbook 
            WHERE POWOD_KSIEGOWANIA = '1' 
            AND Nr_Wniosku = PHORGEN.Nr_Wniosku 
           ),rekldet.SOLUTION_SENDING_DATE))) field2 
FROM rgen 
JOIN reklcomp 
ON rgen.UIDINSTANCEID = reklcomp.UIDINSTANCEID 
JOIN rekldet 
ON rgen.UIDINSTANCEID = rekldet.UIDINSTANCEID 
JOIN reklclient 
ON rgen.UIDINSTANCEID = reklclient.UIDINSTANCEID 
LEFT JOIN phorgen 
ON RGEN.NR_WNIOSKU = PHORGEN.NUMER_OAR 
LEFT JOIN phorsol 
ON PHORGEN.UIDINSTANCEID = phorsol.UIDINSTANCEID