【问题标题】:Counting open tickets for each day for a given period - Crystal Reports 11.0.0.895计算给定时间段内每天的开放票数 - Crystal Reports 11.0.0.895
【发布时间】:2017-06-26 19:54:07
【问题描述】:

我的任务是创建一份报告,统计过去 365 天内每天的未处理服务票。如果没有完成日期,或者完成日期大于被评估的日期并且创建日期小于或等于被评估的日期,则工单被分类为在任何给定日期开放。我的问题是我在报告中没有日期字段可以分组,因为我无法对已创建或已解决的日期字段进行分组,因为我正在计算未完成的工单并且可能在给定的日期没有创建或完成工单。

我尝试创建一个每天列出的命令,然后将其添加到没有加入的报告中,这当然会创建一个笛卡尔积,但这会使报告崩溃并且需要很长时间才能运行。如何为给定时间段(在本例中为过去 365 天)内的每一天创建一个组,我可以在其中放置我的公式来计算未结门票?

是否有解决此问题的方法,非常感谢任何帮助。我正在使用 Crystal 报表版本 11.0.0.895

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    这是您最好在数据库中解决的任务(或 Crystal Reports 中的查询/命令)。作为草图:

    1. 为您想查看的每一天设置一行(也许使用date table)
    2. 每天从该表中选择符合您条件的票数 (count)

    这样您将获得一个始终包含 365 行的结果集,因此您的报告中不会出现任何问题。如果当天没有票,则某些行可能包含 0。

    下面是一个例子。它使用日期表。它显示了两种获取给定日期的机票信息的方法:

    • 子选择:提供每个日期的开放票数,不多不少
    • 加入日期的票证。使用这种方式,所有票证信息都可以/在您的结果集中可用。可以在 SQL 或您的报告中进行计数和分组(按严重性、分配的用户等对未结工单进行分组)

    查看 where/join 条件(opened <= adate 和 (closed is null or closed >= adate))是否准确代表您想要的(如果在日期关闭的票证算作当天开放,票证是否会在同一个日期被视为开放,....

    create table #dates (adate date);
    insert into #dates (adate) values 
    ('2017-06-23'),
    ('2017-06-22'),
    ('2017-06-21'),
    ('2017-06-20'),
    ('2017-06-19')
    
    
    create table #tickets (id int, opened date, closed date);
    insert into #tickets (id, opened, closed) values
    (1, '20170620', null),
    (2, '20170620', '20170622'),
    (3, '20170621', '20170622'),
    (4, '20170624', null)
    
    -- just the open tickets per day
    select 
        adate 
        ,(select count(id) from #tickets where opened <= adate and (closed is null or closed >= adate)) open_tickets
    from #dates
    left outer join #tickets on opened <= adate and (closed is null or closed >= adate)
    
    -- tickets joined to date, all ticket information available
    select 
        adate 
        ,#tickets.*
    from #dates
    left outer join #tickets on opened <= adate and (closed is null or closed >= adate)
    
    drop table #tickets
    drop table #dates
    

    【讨论】:

    • 感谢您的建议,但问题似乎仍然存在 - 如何将日期表链接到我的数据以便能够执行计算。
    • @user2694655 我在答案中添加了一个示例
    • 太棒了,非常感谢您的帮助。这个例子真的很有帮助
    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多