我有一個在Oracle中創建的視圖。它返回行,但是當我通過Crystal Reports使用它時,我沒有行。我已經收窄,這CTE在視圖背後的查詢:Oracle返回行 - Crystal報告不包含
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,它的工作原理(這第二個查詢是原始報表有什麼,但由於尋找財政年度的邏輯問題,它必須改變)。
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
)
任何想法爲什麼第二個CTE導致Crystal報告不拉任何記錄?這兩個查詢肯定都有返回的行,只是Crystal Reports不喜歡第一個查詢(儘管我不明白爲什麼,因爲我會認爲Crystal只是簡單地向Oracle查詢數據,而不會被後面的內容困擾視圖?!)
這不會簡化到這一點,因爲這不會動態拉動當前的財政年度,而這正是該聲明實現的目標。不,任何地方都沒有錯誤。這兩個語句在查詢表時返回相同的結果;只是Crystal Reports認爲它返回第一個語句的0行。 – Lock
我知道它會根據sysdate而有所不同。問題在於你沒有第二個參數給'TO_DATE',這使得它取決於會話級別的設置,這取決於你的連接方式。 –
哦,對了,得到了!那確實很合理。我不明白的是爲什麼我可以從一個程序中選擇數據,但不是另一個?我會認爲視圖背後的日期格式取決於oracle服務器,而不是應用程序設置(因爲它是一個視圖,我希望這部分對應用程序是透明的) – Lock