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;
}
}
}
}
crm使用FetchXml聚合查询的更多相关文章
- crm使用FetchXml分组聚合查询
/* 创建者:菜刀居士的博客 * 创建日期:2014年07月09号 */ namespace Net.CRM.FetchXml { using System; using Micr ...
- Dynamics CRM 2015/2016 Web API:聚合查询
各位小伙伴们,今天是博主2016年发的第一篇文章.首先祝大家新年快乐.工资Double,哈哈.今天我们来看一个比較重要的Feature--使用Web API运行FetchXML查询! 对的,各位.你们 ...
- python操作mongodb之二聚合查询
#聚合查询 from pymongo import MongoClient db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_exam ...
- [SQL基础教程] 3-1 对表进行聚合查询
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...
- 开发中使用mongoTemplate进行Aggregation聚合查询
笔记:使用mongo聚合查询(一开始根本没接触过mongo,一点一点慢慢的查资料完成了工作需求) 需求:在订单表中,根据buyerNick分组,统计每个buyerNick的电话.地址.支付总金额以及总 ...
- mongodb高级聚合查询
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- ThinkPHP 数据库操作(四) : 聚合查询、时间查询、高级查询
聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: ...
- ElasticSearch 6.2 Mapping参数说明及text类型字段聚合查询配置
背景: 由于本人使用的是6.0以上的版本es,在使用发现很多中文博客对于mapping参数的说明已过时.ES6.0以后有很多参数变化. 现我根据官网总结mapping最新的参数,希望能对大家有用处. ...
- orm分组,聚合查询,执行原生sql语句
from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...
随机推荐
- C语言结构体变量内存分配与地址对齐
地址对齐简单来说就是为了提高访问内存的速度. 数组的地址分配比较简单,由于数据类型相同,地址对齐是一件自然而然的事情. 结构体由于存在不同基本数据类型的组合,所以地址对齐存在不同情况,但总体来说有以下 ...
- 浙江大学2015年校赛B题 ZOJ 3861 Valid Pattern Lock
这道题目是队友写的,貌似是用暴力枚举出来. 题意:给出一组数,要求这组数在解锁的界面可能的滑动序列. 思路:按照是否能够直接到达建图,如1可以直接到2,但是1不能直接到3,因为中间必须经过一个2. 要 ...
- USACO Money Systems Dp 01背包
一道经典的Dp..01背包 定义dp[i] 为需要构造的数字为i 的所有方法数 一开始的时候是这么想的 for(i = 1; i <= N; ++i){ for(j = 1; j <= V ...
- iOS- 三步快速集成社交化分享工具ShareSDK
http://www.cnblogs.com/qingche/p/3727559.html 1.前言 作为现在App里必不可少的用户分享需要,社交化分享显然是我们开发app里较为常用的. 最近因为公司 ...
- pay包注释(一)
lovep2c项目pay模块注释: views.py: def create_user_no(email): return md5(email).hexdigest().upper() + &q ...
- docker学习笔记:容器的网络设置
创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...
- 制作Linux(Fedora、Ubuntu、CentOS)优盘启动
随着嵌入式技术的快速发展,Linux快速发展过一段时间.虽然现在不是很热,但是linux在现实社会的使用还是很有用处.而光盘有有些落伍,不仅浪费而且不环保,所以质优价廉的优盘就脱颖而出.所以,用优盘制 ...
- Codeforces Round #FF (Div. 2):C. DZY Loves Sequences
C. DZY Loves Sequences time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 插件化—配置xml的辅助测试
1.xml文件,xml文件在res/xml目录下 <?xml version="1.0" encoding="utf-8"?> <infos& ...
- source insight 中文注释为乱码解决
1. source insight 中文注释为乱码解决 http://blog.csdn.net/bingfeng1210/article/details/7527059 2. Source Insi ...