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

Crystal report - Group Towns by Countries

我有两张桌子

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

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

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

在您提供的示例中,在 Sql 服务器中执行 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 Countries.Name, Towns.TownName 也可以)。

然后您将得到一份符合您要求的报告。