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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言中fprintf函数的使用介绍

    C语言中fprintf函数的使用介绍C语言中fprintf函数的使用介绍fprint函数的原型://fp为文件指针,format是输出控制字符串intfprintf(FILE*fp,char*format,…)下面是使用fscanf和fprintf函数实现一个学生信息输入和输出的demo#include<stdio.h>#include<stdlib.h>#include<st…

    2022年10月18日
    0
  • win11安装node并且配置环境变量

    win11安装node并且配置环境变量npm使用过程中的一些错误解决办法及npm常用命令和技巧-世有因果知因求果-博客园用户名是自己的C:\Users\KenKen\AppData\Roaming\npmNODE_PATHC:\ProgramFiles\nodejs\node_modules

    2022年5月31日
    156
  • 虚拟机怎么退出vi编辑模式_手机系统占用30个g正常吗

    虚拟机怎么退出vi编辑模式_手机系统占用30个g正常吗ESC键->冒号->小写q->(可选:不保存退出加个惊叹号!)->(可选:如文件需保存加个小写w)  当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。   (1)在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,返回到shel

    2022年9月30日
    0
  • springboot日志配置文件_ipsec配置步骤

    springboot日志配置文件_ipsec配置步骤SpringBoot使用CommonsLogging进行所有内部日志记录,但底层日志实现保持开放状态。为JavaUtilLogging,Log4j2和Logback提供了默认配置。SpringBoot能自动适配所有的日志,本次讲解slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉;SpringBoot默认帮我们配置好了日志,我们直接即可。

    2022年9月13日
    0
  • IDEA使用教程_intellij idea使用教程

    IDEA使用教程_intellij idea使用教程idea启动后会在cpan当前用户下生成一个C:\Users\Crystal.IntelliJIdea2018.1文件夹,这个文件夹里面有两个子文件夹config和system。删除这两个文件夹,idea在启动时候会重新配置。idea的project类似于eclipse的workspace;idea的modue类似于eclipse的project;配置都是在setti…

    2022年10月13日
    2
  • C# OleDbCommand 和 OleDbDataReader 使用小结[通俗易懂]

    C# OleDbCommand 和 OleDbDataReader 使用小结[通俗易懂]usingSystem.Data;usingSystem.Data.OleDb;OleDbConnectionthisConnection=newOleDbConnection(      "Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("data.mdb"));//获取本地Access//数据库路径  …

    2022年5月12日
    53

发表回复

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

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