我正在尝试根据售票系统创建报告。目标是有一个包含多行的图表,一个是按周打开的票据,另一行是按周关闭的票据。
我遇到的问题是,当您对数据进行分组时,记录不能在多个组中。 但是,票证可以在一周内打开,在另一周期间关闭。在该示例中,记录需要计算两次。
例如。 门票123456 开放日期:2012年1月1日 关闭日期:2012年12月1日
此票据在第1周期间开放,并在第2周期间关闭。 问题是,如果按“打开周”分组,然后按关闭周分组,则按第一个组过滤第二个组。
基本上,我需要一种方法来将数据分成多个组,但总体目标是将它们显示在折线图中,其中线条显示每周打开和关闭的门票数量。
可能不是最好的描述,但很难描述? 有人有什么想法吗?
答案 0 :(得分:0)
如果我在哪里修改SQL语句以包含如下内容:
WITH DateTable
AS
(
SELECT CAST((GETDATE() - 180) as Date) AS [DATE]
UNION ALL
SELECT DATEADD(dd, 1, [DATE]) FROM DateTable
WHERE DATEADD(dd, 1, [DATE]) < cast(GETDATE() as Date)
)
上面创建了一个临时表,其中包含过去180天内的所有日期。然后添加一个新行,从该表中选择“DATE”列到SQL Query:
SELECT "DateTable"."DATE", ....
然后在SELECT语句之后使用CROSS JOIN连接两个表
CROSS JOIN "DateTable"
这将使您从查询结果中看起来像这样:
OrderNum DueDate CompletedDate
1 01/01/01 01/02/01
2 01/01/01 01/01/01
3 01/02/01 01/03/01
4 01/02/01 01/02/01
查询如下所示的结果:
OrderNum DueDate CompletedDate Date
1 01/01/01 01/02/01 01/01/01
2 01/01/01 01/01/01 01/01/01
3 01/02/01 01/03/01 01/01/01
4 01/02/01 01/02/01 01/01/01
1 01/01/01 01/02/01 01/02/01
2 01/01/01 01/01/01 01/02/01
3 01/02/01 01/03/01 01/02/01
4 01/02/01 01/02/01 01/02/01
1 01/01/01 01/02/01 01/03/01
2 01/01/01 01/01/01 01/03/01
3 01/02/01 01/03/01 01/03/01
4 01/02/01 01/02/01 01/03/01
现在你可以使用一个简单的Crystal Record Select语句来减少那些在给定日期开放的结果:
{Ticket Open Date} < {Command.DATE} and
{Ticket Close Date} > {Command.DATE}
现在,您在多个组中拥有相同的详细信息行。希望有所帮助,P.S。如果我有关于您的查询或表结构的更多信息,我可能会更具体。