您的位置:首页 > Web前端

crm使用FetchXml分组聚合查询

2014-07-09 09:09 513 查看
/* 创建者:菜刀居士的博客

* 创建日期:2014年07月09号

*/

namespace Net.CRM.FetchXml

{

using System;

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Query;

/// <summary>

/// 使用FetchXml聚合查询,分组依据

/// </summary>

public class FetchXmlExtension

{

/// <summary>

/// 分组聚合

/// sql: select count(*),ownerid from account group by ownerid

/// </summary>

public void Group(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='name' alias='name_count' aggregate='count' />

<attribute name='ownerid' alias='ownerid' groupby='true' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

decimal value = ((Money)((AliasedValue)en["name_count"]).Value).Value;

EntityReference ownerEr = (EntityReference)((AliasedValue)en["ownerid"]).Value;

}

}

/// <summary>

/// 分组聚合,按年分组

/// </summary>

public void GroupByYear(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='year' alias='year' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_year = (Int32)((AliasedValue)en["year"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

/// <summary>

/// 分组聚合,按季度分组

/// </summary>

public void GroupByQuarter(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='quarter' alias='quarter' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_quarter = (Int32)((AliasedValue)en["quarter"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

/// <summary>

/// 分组聚合,按月分组

/// </summary>

public void GroupByMonth(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='month' alias='month' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_month = (Int32)((AliasedValue)en["month"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

/// <summary>

/// 分组聚合,按周分组

/// </summary>

public void GroupByWeek(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='week' alias='week' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_week = (Int32)((AliasedValue)en["week"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

/// <summary>

/// 分组聚合,按日分组

/// </summary>

public void GroupByDay(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='day' alias='day' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_day = (Int32)((AliasedValue)en["day"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

/// <summary>

/// 分组聚合,多个分组依据

/// </summary>

public void GroupByYearAndQuarter(IOrganizationService service)

{

string fetchXml = @"<fetch distinct='false' mapping='logical' aggregate='true'>

<entity name='account'>

<attribute name='accountid' alias='account_count' aggregate='count'/>

<attribute name='estimatedvalue' alias='estimatedvalue_sum' aggregate='sum'/>

<attribute name='actualclosedate' groupby='true' dategrouping='year' alias='year' />

<attribute name='actualclosedate' groupby='true' dategrouping='quarter' alias='quarter' />

</entity>

</fetch>";

EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));

if (ec != null && ec.Entities.Count > 0)

{

Entity en = ec.Entities[0];

//获取结果

int value_year = (Int32)((AliasedValue)en["year"]).Value;

int value_quarter = (Int32)((AliasedValue)en["quarter"]).Value;

int value_count = (Int32)((AliasedValue)en["account_count"]).Value;

decimal value_sum = ((Money)((AliasedValue)en["estimatedvalue_sum"]).Value).Value;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: