0

我需要获取在某个字段中具有最大日期的实体。我用 Stunnware 尝试了下面的代码,但它给了我一个错误,即 MAX 函数无效。

  <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' aggregate='true'>
    <entity name='field1'>
      <attribute name='field2' />
      <attribute name='field3' />
      <attribute name='field4' />
      <order attribute='field1' descending='false' />
      <link-entity name='contact' from='field1' to='otherfield' alias='ac'>
          <filter type='and'>
          <condition attribute='field5' operator='eq' value='123456' />
           </filter>
      </link-entity>
     <link-entity name='secondentity' from='field2' to='otherfield' visible='false' link-type='outer' alias='a_6c61a84be522e31194080050569c4325'>
         <attribute name='date' alias='maxdate' aggregate='max' />
      </link-entity>
   </entity>
   </fetch>

你能帮我指出我正在做的错误吗?

4

3 回答 3

4

事实证明它不起作用:

我的查询中有几个问题:

1-根据 Paul Way 的回复,我的 fetch xml 丢失了aggregate="true"

2-聚合函数不适用于Order属性

3-如果我要在使用聚合函数时检索属性,我必须对groupby它们添加一个alias

4- 聚合函数 MAX 不能应用于日期类型。

所以我的另一个解决方案是按降序检索所有日期,然后我将使用检索到的第一个实体。

于 2014-04-08T15:25:22.907 回答
1

这是一个很好的例子:http: //msdn.microsoft.com/en-us/library/gg309565.aspx

<fetch distinct='false' mapping='logical' aggregate='true'> 
    <entity name='opportunity'> 
       <attribute name='estimatedvalue' alias='estimatedvalue_max' aggregate='max' /> 
    </entity> 
</fetch>

对于您的上述 XML,应该是这样的:

<fetch version="1.0" output-format="xml-platform" mapping="logical" aggregate="true">
    <entity name="myentity">
        <attribute name="personname" />
        <order attribute="personname" descending="false" />
        <link-entity name="mysecondentity" from="personid" to="secondpersonid" visible="false" link-type="outer" alias="aa">
            <attribute name="date" alias='date_max' aggregate="max" />
        </link-entity>
    </entity>
</fetch>
于 2014-04-08T14:41:51.040 回答
1

我刚有过同样的经历。长话短说:CRM 2011 中的日期字段不能使用 SUM、AVG、MIN 和 MAX。在 CRM 2013 中,MIN 和 MAX 可用于日期字段。

因此,在 2011 年,唯一的方法是选择所有内容并自己完成工作,或者选择数据,按数据排序并将 pagesize 设置为 1,以获得最大值或最小值。

于 2014-08-17T13:53:39.663 回答