ORACLE数据库报告问题

时间:2017-02-02 05:56:11

标签: sql oracle

下面是我编写的用于生成报告的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

1 个答案:

答案 0 :(得分:0)

  

“每个月日期为第一个自动报告数据为空”

在不了解您的业务规则或数据的情况下,我们很难为您解决此问题。但这条线确实看起来很可疑:

and to_char(trunc(p.ext_date),'MONYY') in (select to_char(sysdate-1,'MONYY') from dual)

在本月的第一天,子查询将返回上一个月。也许那是对的。这取决于ext_date的目的。另一方面,您发布的代码有一个备注过滤器(没有-1),该过滤器已被注释掉。本月的第一天将返回当月。为什么要注释掉?似乎有人不太确定正确的过滤器是什么。

因此,这归结为了解您的数据和业务规则。这不是我们可以为您解决的问题。如果您不了解该域名,那么您需要找到您组织中的某个人。