sql-server - Crystal 报告 - 按国家对城镇进行分组

标签 sql-server vb.net crystal-reports

我有两张 table

enter image description here

通过这个查询我得到了结果

select countries.id, countries.name, Towns.id,Towns.TownName
from
Countries
left outer join Towns on countries.id = towns.countryID

enter image description here

现在我想按国家/地区对结果进行分组,以便在我的 CrystalReport 上获得类似的结果。有可能做到吗?

enter image description here

最佳答案

在您提供的示例中,在 Sql Server 中执行GROUP BY 是不可取的。 Sql GROUP BY 通常用于从每个组中的列表中投影单个标量值,例如

SELECT Countries.Name, Count(Towns.Id) AS NumberOfTowns, Sum(Towns.Population) AS TotalPop
FROM Countries
   LEFT OUTER JOIN Towns 
   ON Countries.Id = Towns.CountryID
GROUP BY Countries.Name;

会给出类似的结果

Name         NumberOfTowns            TotalPop
Bosnia       2                        123456
England      2                        98765

通过将聚合 COUNTSUM 应用于每个国家/地区的所有行(城镇)。

这对您的报告没有用,因为您需要显示每个国家/地区所有城镇的列表。

您想要的是按原样使用当前查询,然后在 Countries.Name 上应用 Crystal Group header 。然后,在 Crystal 中,从详细信息部分删除 Countries.Name 字段(因为您不希望国家/地区重复)。您可能还希望在组和数据中完成一些排序 - 再次,我建议您在 Crystal 中执行此操作(尽管 ORDER BY Country.Name, Towns.TownName 也可以)。

然后您将获得一份与您的要求类似的报告。

关于sql-server - Crystal 报告 - 按国家对城镇进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420558/

相关文章:

c# - EF 核心不在迁移方法上创建表

c# - 以编程方式隐藏 Crystal Report 中的文本/行

c# - Crystal Report WinForm如何修复它错误对象引用未设置为对象的实例?

c# - 从多个表(C#实体)获取数据,通过外键链接,转换为匿名对象

sql-server - SQL Server 为某些列插入相同的值

.net - winforms 应用程序中的窗口关闭事件

vb.net - VB.NET 中通过后期绑定(bind)实现的多态性不允许使用事件,有解决方法吗?

vb.net - 从 vb.net 获取 AutoCAD 2015 中对象的句柄

sql - Crystal Reports - 促进正面/背面打印

C# Web 应用程序未通过 Azure 混合连接连接到本地 SQL Server