如果我在你那里我会修改你的 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
现在您可以使用简单的 Crystal Record Select 语句将结果减少到仅在给定日期打开的结果:
{Ticket Open Date} < {Command.DATE} and
{Ticket Close Date} > {Command.DATE}
现在您在多个组中拥有相同的详细信息行。希望有帮助,P.S.如果我有更多关于您的查询或表结构的信息,我可能会更具体。