首页 > 解决方案 > SSRS - 根据where子句在表达式中显示字段?

问题描述

我有一个如下所示的数据表。这显示了基于呼叫量的前 3 个子呼叫类别。“order”列是一个行号,显示基于调用的 subcallcategory 所在的顺序。

我正在尝试在 SSRS 中编写一些 DAX,它显示以下内容

焦虑是最常见的咨询电话,其次是工作相关压力和丧亲

我已经编写了下面的代码,但是它似乎没有选择最后两个类别?有人知道我做错了什么吗?

=IIf(Fields!Order.Value = "1" and Fields!Category.Value = "Counselling", Fields!SubCallCategory.Value, "") & 
    " was the most common counselling call, followed by " & 
    IIf(Fields!Order.Value = "2" and Fields!Category.Value = "Counselling", Fields!SubCallCategory.Value, "") & 
    " and " & IIf(Fields!Order.Value = "3" and Fields!Category.Value = "Counselling", Fields!SubCallCategory.Value, "")

在此处输入图像描述

以下是我当前的输出

在此处输入图像描述

标签: reporting-servicesdaxssrs-2012

解决方案


正如 Alan 所提到的,您的表达只是查看单行数据。

您需要将此表达式放在按类别分组的表中。

然后,您将在您的 ORDER 中查找那些并使用该 Sub Cat 值。我使用 MAX 和 NULL 来获得匹配的值,例如

=MAX(IIf(Fields!Order.Value = 1, Fields!SubCallCategory.Value, NOTHING)) & 
    " was the most common " & Fields!Category.Value & " call, followed by " & 
    MAX(IIf(Fields!Order.Value = 2, Fields!SubCallCategory.Value, NOTHING)) & 
    " and " & MAX(IIf(Fields!Order.Value = 3, Fields!SubCallCategory.Value, NOTHING))

对于正确 ORDER 中的那些,MAX 将获得超过 NOTHING(SSRS 为 NULL)的 SubCat 值。

这将为咨询提供一条线路,为法律提供一条线路。

您还可以将总数添加到

MAX(IIf(Fields!Order.Value = 1, Fields!Calls.Value, 0))

我假设您的 ORDER 字段是 INTEGER 并且不需要引号。


推荐阅读