我正在尝试创建一个基于票务系统的报告。我们的目标是有一个具有多条线的图形,一条线用于按周打开的门票,另一条线是按周关闭的门票。
我遇到的问题是,当您对数据进行分组时,一条记录不能在多个组中。然而,一张票可以在一周内打开,在另一周内关闭。在该示例中,需要对记录进行两次计数。
例如。门票123456开放日期:2012年1月1日截止日期:2012年1月12日
此票证在第1周打开,在第2周关闭。问题是,如果按打开的周分组,然后按关闭的周分组,则会按第一个组筛选第二个组。
本质上,我需要一种将数据放在多个组中的方法,但总体目标是在线形图中显示它们,其中线条显示每周打开和关闭的票证数量。
可能不是最好的描述,但很难描述?有谁有什么想法吗?
发布于 2012-05-22 06:52:58
如果我在你的位置,我会修改你的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查询中添加一行,从该表中选择"DATE“列:
SELECT "DateTable"."DATE", ....然后,在SELECT语句之后,使用交叉连接来连接这两个表
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}现在,您在多个组中具有相同的详图线。如果我有更多关于你的查询或表结构的信息,我可能会更具体。
https://stackoverflow.com/questions/9083599
复制相似问题