fetchxml脚本中的case语句

时间:2014-10-31 15:54:58

标签: sql sql-server xml reporting-services fetchxml

请注意,虽然这个问题是完全不同的问题,但它直接与this question.

相关

以下是返回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>

bio_webuseraccountstatus的值可以是Active, Inactive, Disabled, Pending, etc..

在FetchXML中有一种方法可以做一个case语句,你可以在其中使用#34; InActive&#34;对于每个不等于&#34;活跃&#34;吗

正如您所看到的,我一直在尝试解决此问题within the reporting layer,但我遇到了很多&#34;字符串格式&#34;的问题。

可以用数据集层(fetchxml)来完成吗?

2 个答案:

答案 0 :(得分:1)

根据this Microsoft forum post

FetchXml中没有等效功能。相反,您需要返回每个字段值,并在调用代码中处理CASE逻辑。如果要在报表中使用此FetchXml,则可以在报表的计算字段中实现CASE逻辑。

答案 1 :(得分:0)

您总是可以在返回时解析fetchxml的输出。 因此,无需将状态isreceivetravelalerts的原始记录字段推送到屏幕,报告或数据库,而是检查状态(零或一)并重写它,然后将新变量添加到输出中。笨拙,但有用。

if ($record->isreceivetravelalerts == 1) 
{           
    $travel_alerts = "Active"; 
}

$travel_alerts = "Inactive";