2016-04-26 90 views
0

我正在執行這個查詢我SQL服務器,它工作正常,但當我嘗試在oracle中執行它,然後它會生成一個無效標識符「IS NULL」的錯誤。任何人都可以在Oracle支持的查詢中翻譯此查詢嗎請幫幫我。謝謝Oracle中的標識符錯誤錯誤。

 SELECT 
     RM_LIVE.EMPLOYEE.EMPNO, RM_LIVE.EMPNAME.FIRSTNAME, 
     RM_LIVE.EMPNAME.LASTNAME, RM_LIVE.CRWBASE.BASE ,RM_LIVE.CRWCAT.crwcat AS "Rank", 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('29','721') THEN '0.25' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('921','301','30','722','601','581') THEN '0.50' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('2','1', '4') THEN '0.70' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MIN(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('1','2') then '0' else '1' END) * 
        MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('4') then '0.20' else '0' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('31','723') THEN '0.75' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC = '861' THEN '0.80' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('17','302','16') THEN '0.85' ELSE '1' END),'0'),'1') * 
     isnull(nullif(MAX(CASE WHEN RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN ('3','7') THEN '0.90' ELSE '1' END),'0'),'1') AS "FTE VALUE" 

    FROM RM_LIVE.EMPBASE, 
    RM_LIVE.EMPLOYEE, 
    RM_LIVE.CRWBASE, 
    RM_LIVE.EMPNAME, 
    RM_LIVE.CRWSPECFUNC, 
    RM_LIVE.EMPSPECFUNC,RM_LIVE.EMPQUALCAT,RM_LIVE.CRWCAT 
     where RM_LIVE.EMPBASE.IDEMPNO = RM_LIVE.EMPLOYEE.IDEMPNO 
     AND RM_LIVE.EMPBASE.IDCRWBASE = RM_LIVE.CRWBASE.IDCRWBASE 
     AND RM_LIVE.EMPLOYEE.IDEMPNO = RM_LIVE.EMPNAME.IDEMPNO 
      AND RM_LIVE.EMPSPECFUNC.IDCRWSPECFUNC =RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC 
      AND RM_LIVE.EMPSPECFUNC.IDEMPNO =RM_LIVE.EMPLOYEE.IDEMPNO 
      AND RM_LIVE.EMPQUALCAT.IDEMPNO=RM_LIVE.EMPLOYEE.IDEMPNO 
      AND RM_LIVE.CRWCAT.IDCRWCAT = RM_LIVE.EMPQUALCAT.IDCRWCAT 
       AND RM_LIVE.CRWCAT.crwcat IN ('CP','FO','CM','MC') 
       AND RM_LIVE.CRWBASE.BASE <> 'XYZ' 
       AND RM_LIVE.CRWSPECFUNC.IDCRWSPECFUNC IN 
       ('921','2' ,'1','301','17','4','3','7','302' ,'861','31', 
       '723','30','722 ','29 ','721','16','601','581') 
        AND RM_LIVE.EMPBASE.STARTDATE <= SYSDATE 
        AND RM_LIVE.EMPBASE.ENDDATE >= SYSDATE 
        AND RM_LIVE.EMPSPECFUNC.STARTDATE <= SYSDATE 
        AND RM_LIVE.EMPSPECFUNC.ENDDATE >= SYSDATE 
         AND RM_LIVE.EMPNAME.FROMDATE <=SYSDATE 
         AND RM_LIVE.EMPQUALCAT.STARTDATE <= SYSDATE 
         AND RM_LIVE.EMPQUALCAT.ENDDATE >= SYSDATE 
         AND TRUNC(RM_LIVE.EMPSPECFUNC.STARTDATE) <= TO_DATE('01/JAN/2013','dd/mon/yyyy') 
         AND TRUNC(RM_LIVE.EMPSPECFUNC.ENDDATE) > = TO_DATE('01/JAN/2013','dd/mon/yyyy') 
    GROUP BY RM_LIVE.EMPLOYEE.EMPNO, RM_LIVE.EMPNAME.FIRSTNAME, 
     RM_LIVE.EMPNAME.LASTNAME, RM_LIVE.CRWBASE.BASE,RM_LIVE.CRWCAT.crwcat; 
+0

爲什麼你要在單引號的數字,使他們字符串文本而不是實際的數字? –

回答

0

isNULL沒有在Oracle定義嘗試NVL代替

+0

我想知道 - 是否有你回滾編輯的原因?沒有什麼改變,但標點符號和大小寫得到了改進,'ISNULL'和'NVL'(它們是*函數名稱)被包裝在代碼塊中,因爲它們應該是。我問,因爲你的另一個編輯 - 代碼塊被不恰當地使用 - 是[元堆棧溢出問題]的主題(http://meta.stackoverflow.com/questions/322098/why-is-this-a-可怕的 - 編輯建議);我想知道堆棧溢出帖子中是否存在對反引號(\')的含義有些困惑。 –

+0

我只是想看看回滾是否有效,我已經提出了建議的編輯,謝謝你的建議編輯 – piyushj