Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 水晶报告-分组_Sql_Crystal Reports - Fatal编程技术网

Sql 水晶报告-分组

Sql 水晶报告-分组,sql,crystal-reports,Sql,Crystal Reports,我正在使用Visual Studio 2008,并希望在报告中显示以下SQL查询: select name, count(*) from mytable group by name; 我可以通过创建一个数据集来实现这一点,该数据集本质上就是上面的查询(由“name”和“count”列组成),但是仅仅为这个查询创建一个额外的数据集似乎有些过分。我更愿意像我在项目中对其他报表所做的那样,拥有一个数据集,即整个表: select * from mytable; 然后使用Crystal Report

我正在使用Visual Studio 2008,并希望在报告中显示以下SQL查询:

select name, count(*) from mytable group by name;
我可以通过创建一个数据集来实现这一点,该数据集本质上就是上面的查询(由“name”和“count”列组成),但是仅仅为这个查询创建一个额外的数据集似乎有些过分。我更愿意像我在项目中对其他报表所做的那样,拥有一个数据集,即整个表:

select * from mytable;

然后使用Crystal Report功能执行分组。然而,我找不到一种方法来进行分组。我想这是可能的?这将允许我将数据集重新用于项目中的其他区域,而不必为每个报告创建唯一的数据集。

在crystal reports中,添加group by“name”字段,并将任何字段的摘要从detail插入其中,将摘要功能更改为“count”。

在crystal中添加group字段;在本例中,在“名称”字段上

在组的页脚中插入详细信息


在组的页脚中插入计数函数,根据记录唯一标识符计数。例如,如果您有多个相同名称的事件,也可以使用不同的计数。

为了获得最佳性能,您应该在服务器端真正使用GROUP BY。
创建一个视图,将数据提供给Crystal报表

您可以在Crystal中进行分组,但会遇到性能问题
随着报表查询的数据不断扩大

这是一个设计决策,但从长远来看,它节省了大量时间和客户机处理

我倾向于首先设计视图(WHERE子句、GROUP BY子句、SELECT中的DB函数)
然后在我准备好数据库端的数据之后,我会看到水晶报告


我的建议是从目的开始

分组字段

无需编写SQL查询,就可以对表中的数据进行分组

在字段管理器中,您可以找到“组名字段”,右键单击并选择“组专家”

选择后,您将获得一个Group Expert对话框,其中显示在数据表中找到的字段。选择要分组的字段名。 (这里我选择了“项目名称”)

您还可以在该字段下创建子组,这些组将被分类为A组、B组

现在,您可以在crystal报表中自动找到添加的组字段! 分组完成了

计数字段

要计算报表中记录或字段的数量,您需要添加新的“Running Total fields”

添加要计数的字段

添加字段后,将“摘要类型”更改为“计数”,然后按“确定”

将此合计字段添加到您需要的区域的报告中(建议使用组页脚)

现在“查找”字段名已分组并计数,无需编写任何SQL查询


希望这会对你有所帮助,如果有意见请留言

如果可能,创建一个对数据集进行分组的数据库视图,然后在crystal报告中使用该视图。这是您试图在报告中完成的最简单、可读性最强的实现。

由于某些原因,我无法添加第一幅图所示的Group Expert。我的仅显示刷新选项。我必须从一开始就使用标准报告向导来创建两个Group By字段:(