您能否幫我更正腳本如下:
set LastDay=SELECT LAST_DAY(SYSDATE) FROM dual;
set FirstDay=Select trunc((sysdate),'month') as First_day_of_month from dual;
SELECT count(*) FROM tab1 g , h.ab1 LEFT JOIN tab2 h ON g.bba = h.bba
WHERE 1 = 1
AND g.DATE_ BETWEEN TO_DATE('FirstDay', 'YYYYMMDD') AND TO_DATE('LastDay', 'YYYYMMDD');
uj5u.com熱心網友回復:
在 Oracle 中,a DATE ALWAYS具有年、月、日、小時、分鐘和秒組件。使用LAST_DAY(SYSDATE)僅設定日期的年-月-日組件并且不修改時間組件,因此如果您從月初過濾到LAST_DAY(SYSDATE)然后您將排除該月最后一天的任何值,其中時間組件介于當前時間和 23:59:59。
你想要的是使用:
SELECT count(*)
FROM tab1 g
CROSS JOIN h.ab1 -- your query is confusing around the joins
-- and may need fixing
LEFT JOIN tab2 h
ON g.bba = h.bba
WHERE g.DATE_ >= TRUNC(SYSDATE, 'MM')
AND g.DATE_ < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1);
uj5u.com熱心網友回復:
那只是
select count(*)
from tab1 g left join tab2 h on g.bba = h.bba
and g.date_ between trunc(sysdate, 'month') and last_day(sysdate);
不是嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/425294.html
