我正在 Crystal Reports XI Developer 中编写一个报表,该报表在 SQL Server 2005 数据库中运行一个存储过程。记录集从按日和小时分组的日志表中返回摘要。
目前我的查询看起来像这样:
SELECT
sum(colA) as "Total 1",
day(convert(smalldatetime, convert(float, Timestamp) / 1440 - 1)) as "Date",
datepart(hh, convert(smalldatetime, convert(float, Timestamp) / 1440 - 1)) as "Hour"
`etc...`
GROUP BY
Day, Hour
忽略日期的疯狂,我认为系统设计者在研究如何存储日期时喝得酩酊大醉。
我的问题是:由于一天中的每个小时并不总是有记录,所以我最终会出现差距,这是可以理解的,但我希望 Crystal 能够报告整个 24 小时,无论是否有数据与否。
我知道我可以通过将整个查询放在一个WHILE
循环中(在存储过程中)并在各个时间进行查询来改变这一点,但是我内心的一些东西说一个查询优于 24 个。
我想知道是否有办法让 Crystal 在一天中的几个小时内迭代,而不是像往常一样迭代表中的行。
或者,有没有办法格式化查询,以便它包含空的小时行而不杀死我的数据库服务器?