3

ORA-00905: missing keywordOracle で次のクエリを実行しようとすると、エラーが発生します。

select distinct MONTH_ID
from    DSS_MAIN.DIM_TIME a1
where   Case When TO_CHAR(SYSDATE,'MM') < 3
Then TO_CHAR(a1.MONTH_START_DATE,'YYYYMM') Between (TO_CHAR(SYSDATE,'YYYY')-1)||'03' And TO_CHAR(SYSDATE,'YYYYMM')
Else TO_CHAR(a1.MONTH_START_DATE,'YYYYMM') Between TO_CHAR(SYSDATE,'YYYY')||'03' And TO_CHAR(SYSDATE,'YYYYMM')
End;

個々の句は正常に機能するので、構文Betweenに何か問題があると思います。Case

何か案は?

4

1 に答える 1

3

これを試して:

SELECT DISTINCT MONTH_ID
  FROM DSS_MAIN.DIM_TIME A1
 WHERE TO_CHAR(A1.MONTH_START_DATE, 'YYYYMM') 
            BETWEEN CASE
                        WHEN TO_CHAR(SYSDATE, 'MM') < '03' THEN
                            (TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) - 1) || '03'
                        ELSE
                            TO_CHAR(SYSDATE, 'YYYY') || '03'
                    END
                AND  TO_CHAR(SYSDATE, 'YYYYMM')

Case は、後で使用するために値を返します。使用した方法では役に立ちません。

于 2012-07-27T17:24:13.277 に答える