crm使用FetchXml聚合查询

crm使用FetchXml聚合查询

大家好,又见面了,我是全栈君。

/* 创建者:菜刀居士的博客
 * 创建日期: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;
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116226.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • sql server 日期转字符串_db2 日期转字符串

    sql server 日期转字符串_db2 日期转字符串Whileworkingwithrawdata,youmayfrequentlyfacedatevaluesstoredastext.Convertingthesevaluestoadatedatatypeisveryimportantsincedatesmaybemorevaluableduringanalysis.In…

  • laravel 使用Postman上传多图片

    laravel 使用Postman上传多图片

  • 如何用51单片机控制步进电机运动「建议收藏」

    如何用51单片机控制步进电机运动「建议收藏」本来接触单片机挺久了的,但是一直只是停留在非常初级的认识阶段,本科的时候上过几门课,但是从来没有自己捣鼓过单片机,这次突然来了兴趣,感觉一下子学到了好多东西,在这里好好整理一下。这篇文章只适合于入门阶段的小白阅读,高手请绕道。12年年初的时候购买了一套普中科技的“单片机开发试验仪”,好多次想好好学学,结果每一次都半途而废,主要原因还是周围的人都不会用,有问题都不知道找谁问,结果锁到箱子里一直到现在。

  • sql server可以定义的约束_数据库常见约束

    sql server可以定义的约束_数据库常见约束SQLserver常见的约束条件1.检查只能是男或者女Sexin(‘男,女’)),Sex=‘男’orsex=‘女’)2.在一个范围中间Sage>0andsage<120Sagebetween12and303.长度大于某个值len(pwd)>6)//pwd为密码字段4.数大于某个值Sage>15.只能是8位字符,前两…

    2022年10月13日
  • [HDU 2096] 小明A+B

    [HDU 2096] 小明A+B[HDU2096]小明A+B 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=20961#include&lt;iostream&gt;2#include&lt;cstdio&gt;3#include&lt;cmath&gt;4#include&lt;algori…

  • 零基础学Java(7)大数

    零基础学Java(7)大数大数如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInte

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号