水晶报告 - 各国集团城镇

时间:2015-05-24 05:57:49

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

我有两张桌子

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

1 个答案:

答案 0 :(得分:2)

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

然后,您将有一份类似于您的要求的报告。

相关问题