【问题标题】:SSRS - Group By Multiple ValuesSSRS - 按多个值分组
【发布时间】:2015-07-27 23:53:34
【问题描述】:

我正在尝试按字段的特定值进行分组。我有项目信息数据填充,我想在选区字段上分组。

但是,我想以特定方式将这些值组合在一起。例如:

如果值为:

因弗米尔区, 克兰布鲁克市, 克雷斯顿镇

然后将这些项目分组到一个名为“EAST”的组中

如果值为:

Valemount 村, 新丹佛村, 卡斯洛村

然后将这些项目分组到一个名为“WEST”的组中

“BASIN”中的其他所有内容。

所以,到目前为止,我已经创建了一个组,并在组属性中的 “Group on” 字段中放置了一个表达式:

**=iif(Fields!cbt_electoralareaidname.Value = "District of Invermere" OR "City of Cranbrook" , "EAST" ,(iif(Fields!cbt_electoralareaidname.Value = "RDCK Area F" OR "Town of Creston", "WEST", "BASINWIDE")))**

但没有任何效果...我知道我想多了,请帮忙!

更新

以下是样本数据:

  • 项目名称
  • 项目说明
  • 位置
  • 选区

检索到,目前布局是这样的:

我也有字段选举区,这是我想要对数据进行排序/分组但不使用 SQL 查询的字段,因为我不想聚合,我想要详细信息并创建行组.对于下面的示例,我只希望它如下所示:

【问题讨论】:

  • 能否提供几行样本数据和预期结果? group by 通常意味着聚合,不清楚您是否希望“组”值中的行(例如您所说的两个值)以某种方式合并或仅在每一行上替换。

标签: sql sql-server sql-server-2008 reporting-services


【解决方案1】:

你可以试试这样的:

Select ...
From ..
GROUP by 
case 
when city in ("city1","city2",...) then "west" 
When city in (...) Then "east"
Else "other"
End 

如果你想生成一个额外的字段以便以后分组:

Select ..., 
case 
when city in ("city1","city2",...) then "west" 
When city in (...) Then "east"
Else "Basin"
End AS region
From ..

如果您有许多城市要定义并且 case ... end 失控,您可以创建一个表,将每个城市映射到某个区域并进行连接:

【讨论】:

  • 大家好,我应该更清楚一点,我不希望 SQL 查询进行分组。我在选举区的 SSRS 报告中创建了一个“行组”。这将按我的数据集的选举区字段中返回的值对其进行排序。但现在我想按所选值对该数据集进行分组。我也会用屏幕截图更新我原来的问题。
  • 您的第二个生成要分组的字段可能会实现我想要的。我可以尝试一下并告诉您,如果您根据我上面的编辑有任何其他建议,请告诉我。非常感谢您的帮助,非常感谢!
  • 这很棒,非常感谢您的帮助!我将第二个查询标记为答案,我感谢你 Tim3880!谢谢你:)
  • 这个答案的第二部分帮助我在我自己的数据集中添加了一个额外的列,以获得该数据集中子组的总数。干得好,@Tim3880!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 2023-03-28
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多