我有两张 table
通过这个查询我得到了结果
select countries.id, countries.name, Towns.id,Towns.TownName
from
Countries
left outer join Towns on countries.id = towns.countryID
现在我想按国家/地区对结果进行分组,以便在我的 CrystalReport
上获得类似的结果。有可能做到吗?
最佳答案
在您提供的示例中,在 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
通过将聚合 COUNT
和 SUM
应用于每个国家/地区的所有行(城镇)。
这对您的报告没有用,因为您需要显示每个国家/地区所有城镇的列表。
您想要的是按原样使用当前查询,然后在 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/