/* 创建者:菜刀居士的博客

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

 */

namespace Net.CRM.FetchXml

{

    using System;

    using Microsoft.Xrm.Sdk;

    using Microsoft.Xrm.Sdk.Query;

/// <summary>

    /// 使用FetchXml聚合查询

    /// </summary>

    public class FetchXmlDemo

    {

        /* 特别提示:FetchXML 包含使您可以计算总和、平均值、最小值、最大值和计数的分组和聚合函数。

         * 在查询中仅仅能指定一个 aggregate 属性,并且不能使用 distinct keyword。要创建的聚合的属性。

         * 请设置keywordaggregate到true,然后指定有效的实体名称。 属性名称,和别名 (变量名)。

         * 同一时候必须指定要运行的聚合的类型。 

         */

/// <summary>

        /// 总和

        /// sql: select sum(new_value) as 'new_value_sum' from account

        /// </summary>

        public void Sum(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_value' alias='new_value_sum' aggregate='sum' />


                                    </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["new_value_sum"]).Value).Value;

            }

        }

/// <summary>

        /// 平均值

        /// sql: select avg(new_value) as 'new_value_avg' from account

        /// 当crm计算数据的平均值时,不考虑 Null 值。

可是。会使用零 (0)。

        /// </summary>

        public void Avg(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_value' alias='new_value_avg' aggregate='avg' />


                                    </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["new_value_avg"]).Value).Value;

            }

        }

/// <summary>

        /// 计算有多少个记录

        /// sql: select count(*) from account

        /// </summary>

        public void Count(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_name' alias='new_name_count' aggregate='count' />


                                    </entity>

                                </fetch>";

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

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

            {

                Entity en = ec.Entities[0];

                //获取结果

                int value = (Int32)((AliasedValue)en["new_name_count"]).Value;

            }

        }

/// <summary>

        /// 计算有多少个记录(针对指定的列名)

        /// sql: select count(distinct new_name) from account

        /// </summary>

        public void CountColumn(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_name' alias='new_name_count' aggregate='countcolumn' distinct='true' />


                                    </entity>

                                </fetch>";

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

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

            {

                Entity en = ec.Entities[0];

                //获取结果

                int value = (Int32)((AliasedValue)en["new_name_count"]).Value;

            }

        }

/// <summary>

        /// 最大值

        /// sql: select max(new_value) as 'new_value_max' from account

        /// 当crm计算数据的最大值时,不考虑 Null 值。可是,会使用零 (0)。

        /// </summary>

        public void Max(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_value' alias='new_value_max' aggregate='max' />


                                    </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["new_value_max"]).Value).Value;

            }

        }

/// <summary>

        /// 最小值

        /// sql: select min(new_value) as 'new_value_min' from account

        /// 当crm计算数据的最小值时,不考虑 Null 值。可是。会使用零 (0)。

        /// </summary>

        public void Min(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_value' alias='new_value_min' aggregate='min' />


                                    </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["new_value_min"]).Value).Value;

            }

        }

/// <summary>

        /// 多个聚合

        /// sql: select count(*) as 'new_value_count',max(new_value) as 'new_value_max',

        ///       min(new_value) as 'new_value_min' from account

        /// </summary>

        public void CountAndMaxAndMin(IOrganizationService service)

        {

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


                                    <entity name='account'>

                                        <attribute name='new_value' alias='new_value_count' aggregate='count' />

                                        <attribute name='new_value' alias='new_value_max' aggregate='max' />

                                        <attribute name='new_value' alias='new_value_min' aggregate='min' />


                                    </entity>

                                </fetch>";

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

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

            {

                Entity en = ec.Entities[0];

                //获取结果

                int count_value = (Int32)((AliasedValue)en["new_value_count"]).Value;

                decimal max_value = ((Money)((AliasedValue)en["new_value_max"]).Value).Value;

                decimal min_value = ((Money)((AliasedValue)en["new_value_min"]).Value).Value;

            }

        }

    }

}

crm使用FetchXml聚合查询的更多相关文章

  1. crm使用FetchXml分组聚合查询

    /* 创建者:菜刀居士的博客  * 创建日期:2014年07月09号  */ namespace Net.CRM.FetchXml {     using System;     using Micr ...

  2. Dynamics CRM 2015/2016 Web API:聚合查询

    各位小伙伴们,今天是博主2016年发的第一篇文章.首先祝大家新年快乐.工资Double,哈哈.今天我们来看一个比較重要的Feature--使用Web API运行FetchXML查询! 对的,各位.你们 ...

  3. python操作mongodb之二聚合查询

    #聚合查询 from pymongo import MongoClient db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_exam ...

  4. [SQL基础教程] 3-1 对表进行聚合查询

    [SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...

  5. 开发中使用mongoTemplate进行Aggregation聚合查询

    笔记:使用mongo聚合查询(一开始根本没接触过mongo,一点一点慢慢的查资料完成了工作需求) 需求:在订单表中,根据buyerNick分组,统计每个buyerNick的电话.地址.支付总金额以及总 ...

  6. mongodb高级聚合查询

    在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...

  7. ThinkPHP 数据库操作(四) : 聚合查询、时间查询、高级查询

    聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: ...

  8. ElasticSearch 6.2 Mapping参数说明及text类型字段聚合查询配置

    背景: 由于本人使用的是6.0以上的版本es,在使用发现很多中文博客对于mapping参数的说明已过时.ES6.0以后有很多参数变化. 现我根据官网总结mapping最新的参数,希望能对大家有用处. ...

  9. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

随机推荐

  1. BZOJ 2242: [SDOI2011]计算器( 快速幂 + 扩展欧几里德 + BSGS )

    没什么好说的... --------------------------------------------------------------------- #include<cstdio&g ...

  2. Android存储之SQLiteDatbase

    SQLiteDatabase的方式会生成一个数据库文件,每个应用最多只对应一个数据库文件,即.db文件. 可以使用很多第三方工具进行打开,查看数据库里的内容. 昨晚试了好几种工具,如navicat,s ...

  3. AOP 笔记

    http://blog.csdn.net/Intlgj/article/details/5671248 这篇文章里面介绍的非常好,值得阅读. 这里盗用里面的两张图片 [在没有AOP之前是这样的] [使 ...

  4. 基于visual Studio2013解决C语言竞赛题之0602最大值函数

     题目

  5. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  6. JavaScript 中的日期和时间

    前言 本篇的介绍涵盖以下部分: 1. 时间标准指的是什么?UCT和GMT 的概念.关联和区别? 2. 时间表示标准有哪些? 3. JS 中时间的处理 日期时间标准 日期的标准就不多说了 -- 公元纪年 ...

  7. mysql如何开启远程连接

    链接地址:http://jingyan.baidu.com/article/046a7b3ed85f3ef9c27fa9dc.html 大家在公司工作中,经常会遇到mysql数据库存储于某个人的电脑上 ...

  8. mysql数据库修改数据库编码,字段编码与表编码(转) good

    最近看了一下KIGG框架,发现在用EF + MYSQL数据库时,数据出现了乱码,用工具(Navicat )查看一下表category的结构发现 KIGG 数据库的默认情况是用latin1编码的(DEF ...

  9. mysql Emoji表情字符集转换

    <pre name="code" class="html">Java代码 java.sql.SQLException: Incorrect stri ...

  10. php实现加好友功能

    思路: 1用户发送好友申请之后 把申请储存到申请数据表中,状态为 未验证 2 当用户登录时,查询申请表中是否有uid和被申请人id相同的,如果同意,更改状态,并把数据插入到对应的好友数据表否则,删除申 ...