7

我在任何报告中都是排名菜鸟,但带有小计的水平线。我有一个数据集,其中包含汽车在停车场所花费的时间。我必须生成一个表格,显示每个小时的一列和每天的一行,显示特定日期特定时间的条目数。

我会在 RDLC 设计器中发现这更容易,它是柱状分组,但我什至在 Crystal 中找不到这样的东西。

帮助。

4

2 回答 2

4

假设以下字段:{table.car_id}{table.census_time}

  • 选择插入 | 交叉表...; 将交叉表添加到报表标题部分

右键单击交叉表并选择“交叉表专家”:

  • 添加{table.census_time]到列字段列表;按小时分组
  • 添加{table.census_time}到行字段列表;按天分组
  • 添加{table.car_id}到汇总字段列表;数数

** 编辑 **

您无需创建特殊公式即可从日期/时间字段中提取小时;交叉表将为您做到这一点。

在此处输入图像描述 选择“Cross-Tab”选项卡,添加{table.census_time}字段,然后单击“Group Options...”按钮。

在此处输入图像描述

选择“每小时”。从选择列表中。

于 2013-07-29T13:38:32.510 回答
1

您需要创建一个包含每小时记录的表:

表日小时

Period             StartHour        EndHour
00:00 - 01:00      0                 1
01:00 - 02:00      1                 2
02:00 - 03:00      2                 3
03:00 - 04:00      3                 4
...
23:00 - 00:00      23                24

然后将您的数据与此表连接起来

SELECT h.Period, DATEPART(dd,d.EntryTime) as Day, 1 as Value
FROM DayHour h LEFT JOIN <YourData> d ON h.StartHour <=DATEPART(hh,d.EntryTime) and DATEPART(hh,d.EntryTime)<h.EndHour

这将返回带有时间段的所有记录,如果在特定时间范围内没有车辆进入停车场,甚至会返回一条记录。将 Period 列拖放到交叉表的列部分,将 Day 列拖放到 Rows 部分。将值列拖到摘要部分。

于 2013-07-29T20:52:52.457 回答