【问题标题】:Crystal report - Group Towns by Countries水晶报表 - 按国家/地区分组城镇
【发布时间】:2015-05-24 05:57:49
【问题描述】:

我有两张桌子

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

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

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

【问题讨论】:

  • 应该像选择country as a Group Header一样简单
  • @StuartLC 很快谢谢,但我仍然不知道设置 GROUP BY 查询;S

标签: sql-server vb.net crystal-reports


【解决方案1】:

在您提供的示例中,在 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 组标题。然后,在 Crystal 中,从 Details 部分中删除 Countries.Name 字段(因为您不希望该国家/地区重复)。您可能还希望在组和数据中完成一些排序 - 再次,我建议您在 Crystal 中执行此操作(尽管 ORDER BY Countries.Name, Towns.TownName 也可以)。

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

【讨论】:

猜你喜欢
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2011-04-28
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多