2016-04-26 43 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がコードブロックで囲まれていました。コードブロックが不適切に使用されているあなたの編集のもう1つが[Meta Stack Overflow question]の対象になっているので、私は尋ねます(http://meta.stackoverflow.com/questions/322098/why-is-this-a-ひどい - 編集 - 示唆);スタックオーバーフローの投稿にbackticks(\ ')の意味に関する混乱があるかどうか疑問に思っています。 –

+0

私はちょうどロールバックが動作するかどうかを見たいと思っていました、私は提案された編集をしました、提案された編集のおかげで – piyushj

関連する問題