如何在Visual Studio的Crystal Reports中创建数据透视表报告?

7

我对报表制作一窍不通,只会制作带有小计的横线。我有一个数据集,包含汽车在停车场停留的时间。我必须生成一个表格,每小时显示一列,每天显示一行,显示特定日期和时间的进入数量。

我觉得使用RDLC设计器更容易,因为它有列分组功能,但我在Crystal中找不到这样的功能。

求助。


你尝试过交叉表吗? - craig
2个回答

4
假设有以下字段:{table.car_id}{table.census_time}
  • 选择插入|交叉表...;将交叉表添加到报告页眉部分

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

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

**编辑**

您不需要创建一个特殊的公式来从日期/时间字段中提取小时数;交叉表会为您完成。

enter image description here 选择“交叉表”选项卡,添加{table.census_time}字段,然后点击“分组选项...”按钮。

enter image description here

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


我该如何按小时分组列?是第二个选项卡,分组选项,使用公式作为分组名称吗?在那里,我尝试应用公式 Hour({table.census_time]),但它告诉我有一个错误,“剩余的文本似乎不是公式的一部分”。 - ProfK

1
你需要创建一张表,每小时都有一条记录:
表名: DayHour
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”列拖放到行部分。将“Value”列拖放到摘要部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接