Oracleで作成したビューがあります。行を返しますが、Crystal Reportsで使用すると、行が表示されません。ビューの背後にあるクエリで、このCTEに絞り込みました。
WITH PERIODS AS (
SELECT
ROWNUM-13 RN,
TO_DATE('01-JUL-' || TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-6), 'YYYY')) AS FISCAL_YEAR_START,
ADD_MONTHS(TO_DATE('01-JUL-' || TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE),-6), 'YYYY')), ROWNUM-13) AS MONTH
FROM
DUAL
CONNECT BY
ROWNUM <= 24
)
これは非常に奇妙です。このCTEを次のように置き換えると、機能します(この2番目のクエリは元のレポートのクエリですが、会計年度を見つける際の論理的な問題のため、変更する必要がありました)。
WITH PERIODS AS (
SELECT
ROWNUM-13 RN,
ADD_MONTHS(TRUNC(sysdate,'yyyy'),6) AS FISCAL_YEAR_START,
TRUNC(ADD_MONTHS(ADD_MONTHS(TRUNC(sysdate,'yyyy'),6), ROWNUM-13),'MONTH') MONTH
FROM
DUAL
CONNECT BY
ROWNUM <= 24
)
2番目のCTEによってCrystalレポートがレコードをプルしない理由はありますか?両方のクエリで返される行は間違いなくありますが、Crystal Reportsは最初のクエリを好みません(ただし、CrystalがOracleにデータをクエリするだけで、背後にあるものに煩わされることはないと思っていたので、理由はわかりません。景色?!)