我收到錯誤在下面的SQL:得到錯誤 - ORA-01858:一個非數字字符被發現,其中一個數字預計
ORA-01858:一個非數字字符被發現在那裏數字預計
SELECT c.contract_num,
CASE
WHEN ( MAX (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/COUNT (c.event_occurrence) < 32
THEN
'Monthly'
WHEN ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/COUNT (c.event_occurrence) >= 32
AND ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/COUNT (c.event_occurrence) < 91
THEN
'Quarterley'
ELSE
'Yearly'
END
FROM ps_ca_bp_events c
GROUP BY c.contract_num;
什麼是您的event_dt列的數據類型?另外,你爲什麼將日期轉換爲字符串並減去它們?什麼目的?如果要查找兩個日期之間有多少天,請考慮如果最大日期是12月12日,最後日期是同年11月31日,可能會得到什麼結果。如果他們在不同的年份呢? – Boneist
event_dt列是日期類型。 –
如果它已經是日期,那你爲什麼要對它做'TO_DATE'? – Boneist