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;
            }
        }
    }
}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm导入cv2包_pycharm中cv2导入失败

    pycharm导入cv2包_pycharm中cv2导入失败最近才开始接触python,经师哥推荐,使用了Pycharm作为编程软件。自己在学图像处理方面的知识,接触OoenCV比较多,以前接触的是C++,使用VS2012进行编译,配置。学习的程序会有 importcv2 这条语句,我刚开始的想法是在File下面找到Deafaultsettings,再找到ProjectInterpreter,找到+,AvailablePackages,搜

    2022年8月25日
    8
  • 小明加密通道进入_乐东县校园,幼儿园人脸识别通道系统,了解详情「建议收藏」

    小明加密通道进入_乐东县校园,幼儿园人脸识别通道系统,了解详情「建议收藏」首页>新闻列表>正文作者:佚名点击数:3更新时间:2020-10-2610:48:11乐东县校园,幼儿园人脸识别通道系统,在这方面,目前基于NFC+3G技术的停车收费系统,可以地解决这类问题。NFC是NearFieldCommunicati…

    2022年6月12日
    30
  • 高斯模糊浅析_ps高斯模糊没反应

    高斯模糊浅析_ps高斯模糊没反应所谓高斯模糊,就是指一个图像与二维高斯分布的概率密度函数做卷积。它的效果如下:是不是有点像变成了近视眼的感觉?没错,高斯模糊常常用来模拟人眼中的物体变远、变快的效果。在照片处理中,我们常常将背景施以高

    2022年8月3日
    17
  • 互联网研发部门组织架构_百度组织架构图2019

    互联网研发部门组织架构_百度组织架构图2019互联网业务研发架构体系指南(草稿V0.0.1)大纲业务技术 稳定性 【稳定性day0】稳定性治理的三种思想—亚马逊、Netflix与蚂蚁金服 【稳定性day1】从DBA到运维架构总监之路-专注的力量 【稳定性day2】当当网的高可用之道 【稳定性day3】蘑菇街的运维体系-如何撑住双十一 【稳定性day4】美团外卖高可用的演进之路-日活两千万的…

    2022年10月12日
    0
  • POSIT算法的原理–opencv 3D姿态估计[通俗易懂]

    POSIT算法的原理–opencv 3D姿态估计[通俗易懂]3D姿态估计-POSIT算法 POSIT算法,PosefromOrthographyandScalingwithIterations, 比例正交投影迭代变换算法:用于估计物体的3D姿态(相对于镜头的平移和旋转量)。算法正常工作的前提是物体在Z轴方向的“厚度”远小于其在Z轴方向的平均深度,比如距离镜头10米远的一张椅子。 算法流程:假设待求的姿态,包括旋转矩阵R和

    2022年10月23日
    0
  • 哈希和一致性哈希算法

    哈希和一致性哈希算法哈希Hash算法介绍哈希算法也叫散列算法,不过英文单词都是Hash,简单一句话概括,就是可以把任意长度的输入信息通过算法变换成固定长度的输出信息,输出信息也就是哈希值,通常哈希值的格式是16进制或者是10进制,比如下面的使用md5哈希算法的示例md5(“123456”)=>”e10adc3949ba59abbe56e057f20f883e”主要特点:•不可逆从哈希值不能推导出原始数据,所以Hash算法广泛应用在现代密码体系中•无碰撞不同的信息进行哈希后

    2022年7月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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