在SSRS中为饼图分组数据

时间:2014-10-30 20:31:48

标签: sql sql-server tsql reporting-services

我有一个用于在ssrs中构建饼图的数据集:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" aggregate="true">
  <entity name="account">
    <attribute name="bio_employeesworldwide" alias="TotalWorldWideEmployees" aggregate="sum" />
    <filter>
      <condition attribute="customertypecode" operator="eq" value="2" />
    </filter>
 <link-entity name="contact" from="parentcustomerid" to="accountid" alias="contact">


    <attribute name="bio_webuseraccountstatus" alias="count_bio_webuseraccountstatus" aggregate="countcolumn" />

    <attribute name="bio_webuseraccountstatus" alias="bio_webuseraccountstatusgroupby" groupby="true" />

  </link-entity>
  </entity>
</fetch>

enter image description here

我想在这个饼图中只有2个区域。一个区域应该全部是活动的,另一个区域应该是!="Active"

的所有区域

或在sql中描述它将是:

Case When "Active" then "Active" else "NotActive". 

如何使用SSRS实现此目的?

我一直试图用这个系列的组表达式来做这个:

enter image description here

enter image description here

我做错了什么? 如何获得2个阴影区域?

在尝试下面的IIF建议后,我得到的输入字符串不是公认的格式:

enter image description here

根据凯尔的建议,我已将公式更改为:

=
IIf(Not (IsNothing(Fields!bio_webuseraccountstatusgroupbyValue.Value) 
    OR Fields!bio_webuseraccountstatusgroupbyValue.Value="")
    ,"Active"
        , "InActive")

我现在得到的结果仍然是那个愚蠢的错误信息:

enter image description here

另一次尝试失败:

=iif(NOT IsNothing(Fields!bio_webuseraccountstatusgroupbyValue.Value),

        Switch(Fields!bio_webuseraccountstatusgroupbyValue.Value<>"InActive" 
        AND Fields!bio_webuseraccountstatusgroupbyValue.Value<>"Active", 
            "InActive", "Active")

        ,"InActive")
有趣的是,这一次,只有一个错误:

enter image description here

我错误地使用了字符串值而不是数字,所以现在就是这样:

=IIF(NOT IsNothing(Fields!bio_webuseraccountstatusgroupbyValue.Value),
        SWITCH(Fields!bio_webuseraccountstatusgroupbyValue.Value <> 1
                    AND Fields!bio_webuseraccountstatusgroupbyValue.Value<>3, 
                1,
                True, 3
        ),1)

现在我没有错误,只是一个错误的饼图:

enter image description here

2 个答案:

答案 0 :(得分:2)

你想要一个IIf表达式:

=IIf(Fields!bio_webuseraccountstatusgroupbyValue.Value = "Active", "Active", "NotActive")

您还需要将其设置为SeriesGroup的Label属性。

答案 1 :(得分:1)

最终表达式中的语法不正确,您错过了True语句中最后一个语句的SWITCH部分。

虽然逻辑对我来说不合适,但这句话所说的是什么 如果该字段为NULL,则该值将为非活动状态,否则如果字段DOES NOT等于非活动AND DOES NOT等于活动,则该值将为非活动状态,否则为活动状态

=IIF(NOT IsNothing(Fields!bio_webuseraccountstatusgroupbyValue.Value),
        SWITCH(Fields!bio_webuseraccountstatusgroupbyValue.Value <> "InActive"
                    AND Fields!bio_webuseraccountstatusgroupbyValue.Value<>"Active", 
                "InActive",
                True, "Active"
        ),"InActive")

替代方法对包含数值的Value列使用以下表达式:

=IIF(Fields!bio_webuseraccountstatusgroupbyValue.Value = 3, 3, 1)