CountDistinct 函数(报表生成器和 SSRS)

返回在给定作用域上下文中计算的,由表达式指定的所有非重复的非 Null 值计数。

注意

在 SQL Server Data Tools 中,您可以在报表生成器和报表设计器中创建和修改报表定义 (.rdl)。 每个创作环境提供了不同的方式来创建、打开和保存报表和相关项。 有关详细信息,请参阅 Web 上 microsoft.com 中的“在报表设计器和报表生成器中设计报表 (SSRS)”

语法

  
CountDistinct(expression, scope, recursive)  

参数

expression
(Variant) 要对其执行聚合的表达式。

作用域
(String) 可选。 包含要对其应用聚合函数的报表项的数据集、组或数据区域的名称。 如果未指定 scope ,则使用当前作用域。

递归
(Enumerated Type) 可选。 Simple(默认值)或 RdlRecursive。 指定是否以递归方式执行聚合。

返回类型

返回 Integer

备注

scope 的值必须是字符串常量,不能是表达式。 对于外部聚合或未指定其他聚合的聚合, scope 必须引用当前作用域或包含作用域。 对于聚合的聚合,嵌套聚合可以指定子作用域。

Expression 可以包含对嵌套聚合函数的调用,但具有以下例外和条件:

  • 嵌套聚合的Scope 必须与外部聚合的作用域相同,或者包含在外部聚合的作用域中。 对于表达式中的所有非重复作用域,一个作用域必须相对所有其他作用域处于子关系中。

  • 嵌套聚合的Scope 不能为数据集的名称。

  • 表达式 不得包含 FirstLastPreviousRunningValue 函数。

  • Expression 不得包含用于指定 recursive的嵌套聚合。

有关详细信息,请参阅聚合函数引用(报表生成器和 SSRS)总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)

有关递归聚合的详细信息,请参阅创建递归层次结构组(报表生成器和 SSRS)

示例

下面的代码示例显示一个表达式,该表达式为默认作用域和父组作用域计算 Size 的唯一非 Null 值数。 该表达式将添加至属于子组 GroupbySubcategory的行的某个单元格中。 父组是 GroupbyCategory。 该表达式显示 GroupbySubcategory (默认作用域)和 GroupbyCategory (父组作用域)的结果。

注意

表达式中不应包含实际的回车符和换行符;这些回车符和换行符包含在示例代码中是为了支持文档呈现器。 如果您要复制以下示例,请删除每一行中的回车符。

="Distinct count (Subcategory): " & CountDistinct(Fields!Size.Value) &   
"Distinct count (Category): " & CountDistinct(Fields!Size.Value,"GroupbyCategory")  

另请参阅

在报表中使用表达式(报表生成器和 SSRS)
表达式示例(报表生成器和 SSRS)
表达式中的数据类型(报表生成器和 SSRS)
总计、聚合和内置集合的表达式作用域(报表生成器和 SSRS)