我试图创建一个基于一个售票系统上的报告。 我们的目标是有一个图形与多条线路,一个由本周开盘门票,其他线路的票由每周关闭。
我的问题是,当你组数据,一个记录不能在多个组。 然而一票可以一直在一个星期内另一打开和关闭。 在这个例子中,该记录将需要被计算两次。
例如。 票务123456开放日期:1/1/2012关闭日期:2012/1/12
这是票2周期间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如果我对你的查询或表结构,我可能更具体的信息。