下面是我编写的用于生成报告的SQL查询,它是在服务器中进行的,因此每天都会执行此查询。但是,当我们从系统收到自动电子邮件时,每个月的日期都是第一个自动报告数据为空。
请帮我解决这个问题。
set serveroutput on
clear screen
set feedback off
set verify off
spool d:\STO_AC_HCIN.txt
--spool /u14/manjula/STO_AC_HCIN.txt
set pagesize 1500
set linesize 150
column ff NOPRINT NEW_VALUE CURR_date
column gg NOPRINT NEW_VALUE CURR_time
column InvDate heading 'Inv_Date' FORMAT date
column Qty heading 'Qty' FORMAT 999999999
select to_char(sysdate, 'DD-MON-YYYY') ff,
to_char(sysdate, 'HH24:MI') gg
from dual;
TTITLE LEFT COL 25 'BILL CHECK STO AC HCIN ' skip 1 -
LEFT COL 25 'LOGIWIZ LIMITED-DLx/M WMS' skip 2 -
'Report Date : ' CURR_DATE skip 1 -
'Time : ' CURR_TIME skip 3 -
select to_char(trunc(p.ext_date),'DD/MM/YYYY') InvDate,
count(distinct (substr(p.loc,1,12))) +7 Qty -- Exclude sublocations
from prodloc_snap p,
sku s
where p.prod_no=s.prod_no
and s.comp_code='HC'
and s.prod_fam='HCIN'
and substr(p.loc,1,3) in ('R04','R06') -- Include only the AC racks
and s.sku not like '%TEST%'
and to_char(trunc(p.ext_date),'MONYY') in
(select to_char(sysdate-1,'MONYY') from dual)
--and to_char(trunc(p.ext_date),'MONYY')in (select to_char(sysdate,'MONYY') from dual)
group by to_char(trunc(p.ext_date),'DD/MM/YYYY')
repfooter skip 3 -
left col 25 '********* End Of Report ***********'
/
set feedback on
spool off
ttitle off
repfooter off
答案 0 :(得分:0)
“每个月日期为第一个自动报告数据为空”
在不了解您的业务规则或数据的情况下,我们很难为您解决此问题。但这条线确实看起来很可疑:
and to_char(trunc(p.ext_date),'MONYY') in (select to_char(sysdate-1,'MONYY') from dual)
在本月的第一天,子查询将返回上一个月。也许那是对的。这取决于ext_date
的目的。另一方面,您发布的代码有一个备注过滤器(没有-1
),该过滤器已被注释掉。本月的第一天将返回当月。为什么要注释掉?似乎有人不太确定正确的过滤器是什么。
因此,这归结为了解您的数据和业务规则。这不是我们可以为您解决的问题。如果您不了解该域名,那么您需要找到您组织中的某个人。