在Crystal Reports XI中的多个组的一个记录(One record in multip

2019-09-25 19:54发布

我试图创建一个基于一个售票系统上的报告。 我们的目标是有一个图形与多条线路,一个由本周开盘门票,其他线路的票由每周关闭。

我的问题是,当你组数据,一个记录不能在多个组。 然而一票可以一直在一个星期内另一打开和关闭。 在这个例子中,该记录将需要被计算两次。

例如。 票务123456开放日期:1/1/2012关闭日期:2012/1/12

这是票2周期间1周期间开启,和关闭的问题是,如果按周开业,然后按封闭一周,它过滤由第一第二组。

从本质上讲,我需要一种方法来在多个组的数据,但总体目标是线图显示它们在线条显示每周打开和关闭的门票数量。

也许不是最好的说明,但它很难形容? 有人有想法么?

Answer 1:

如果我在那里你我会修改你的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天内的所有日期的临时表有点的。 然后添加一个新行选择从该表中的“日期”一栏为您SQL查询:

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

现在你可以使用一个简单的水晶记录的SELECT语句削减的reults,只有那些开在那些日子给出:

{Ticket Open Date} < {Command.DATE} and
{Ticket Close Date} > {Command.DATE}

现在你有多个组相同的明细。 希望帮助,PS如果我对你的查询或表结构,我可能更具体的信息。



文章来源: One record in multiple Groups within Crystal Reports XI