0

FetchXMLを使用しており、2つのエンティティのカウントをグループ化して使用していますが、グループ化する必要のない残りのエンティティは、データをプルダウンするだけで済みます。たとえば、これは私のコードです:

string groupby1 = @" 
<fetch distinct='false' mapping='logical' aggregate='true'> 
 <entity name='opportunity'>
  <attribute name='name' alias='opportunity_count' aggregate='countcolumn' />  
  <attribute name='ownerid' alias='ownerid' groupby='true' />
  <attribute name='createdon' alias='createdon' /> 
  <attribute name='customerid' alias='customerid' /> 
 </entity> 
</fetch>";

EntityCollection groupby1_result = orgProxy.RetrieveMultiple(new FetchExpression(groupby1));

foreach (var c in groupby1_result.Entities)
{
  Int32 count = (Int32)((AliasedValue)c["opportunity_count"]).Value;
  string OwnerID = ((EntityReference)((AliasedValue)c["ownerid"]).Value).Name;
  DateTime dtCreatedOn = ((DateTime)((AliasedValue)c["createdon"]).Value);
  string CustomerName = ((EntityReference)((AliasedValue)c["customerid"]).Value).Name;
}

しかし、私はこのエラーを受け取ります:

例外:System.ServiceModel.FaultException`1 [Microsoft.Xrm.Sdk.OrganizationServiceFault]:集約操作が指定されており、groupbyでもaggregateでもない場合、属性を要求できません。NodeXml :(障害の詳細はMicrosoft.Xrm.Sdk.OrganizationServiceFaultと同じです)。

一部の値で集計を使用し、他の値では使用しない方法を教えてください。

4

2 に答える 2

1

エラー メッセージが答えを示しています。これは FetchXML では不可能です。2 つの FetchXML 呼び出しを行う必要があります。1 つは集計用、もう 1 つはデータ用です。

于 2011-09-26T03:51:09.993 に答える
0

そのため、ここでいくつかのことが行われています。問題は、SQL を含むどのクエリ言語でもクエリを実行できないため、FetchXML でクエリを実行できないということではありません。上記の FetchXML の SQL は次のとおりです。

SELECT ownerID, createdon, customerid
FROM dbo.Opportunity
GROUP BY ownerID

データベースに対してこの SQL を実行しようとすると、標準Column 'dbo.Opportunity.CreatedOn' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.エラーが発生します。これは、まさに例外が伝えようとしているものです。これを解決するには、それぞれの要素に属性を含めて、集計されていないすべての列 (この場合はcreatedonと) でグループ化する必要もあります。customeridgroupby='true'attribute

第 2 に、各商談の作成日によるグループ化は多かれ少なかれ無益なグループ化です。商談は通常、異なる日時に作成されるため、このグループ化ではテーブル全体が返されるだけです。Microsoft はこれを正しく認識しているため、上記のグループ化の問題を修正すると、datetime 列に関連する別の例外が発生します。以前に共有した記事を読み続けると、属性を使用してさまざまな日付間隔 (年、月、四半期など) でグループ化するさまざまな方法に対処する例がありdategroupingます。

しかし、一般的なグループ化の問題と日付グループ化の問題を修正した後でも、結果セットはまだあなたが望むものではないかもしれないと感じています。そうでない場合は、表示されると予想される結果セットの例を投稿してから、FetchXML にそのセットを提供する力があるかどうかを検討することをお勧めします。

于 2011-09-27T03:55:26.990 に答える