{"id":105,"date":"2011-04-23T08:41:00","date_gmt":"2011-04-23T03:11:00","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=105"},"modified":"2021-08-25T11:17:06","modified_gmt":"2021-08-25T11:17:06","slug":"group-by-using-fetchxml","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2011\/04\/group-by-using-fetchxml\/","title":{"rendered":"Group by using FetchXML"},"content":{"rendered":"<p>In Microsoft Dynamics CRM 2011\u00a0<strong>FetchXML<\/strong>\u00a0includes grouping and aggregation features which let us to use aggregate functions like sum, count etc.<br \/>\nUsing Group by we can calculate sum, avg, min, max, count. But, Group by clause is not supported through LINQ in CRM.<br \/>\nYou can only specify one aggregate attribute in a query and you cannot use the distinct keyword. To create an aggregate attribute, set the keyword aggregate to true, then specify valid entity name, attribute name and alias(variable name). You must also specify the type of aggregation you want to perform.<br \/>\n&lt;fetch distinct=&#8217;false&#8217; mapping=&#8217;logical&#8217; aggregate=&#8217;true&#8217;&gt;<br \/>\n&lt;entity name=&#8217;entity name&#8217;&gt;<br \/>\n&lt;attribute name=&#8217;attribute name&#8217; aggregate=&#8217;count&#8217; alias=&#8217;alias name&#8217;\/&gt;<br \/>\n&lt;\/entity&gt;<br \/>\n&lt;\/fetch&gt;&#8221;<br \/>\n<strong>Below is the example to get sum of total amount of all won quotes:<\/strong><br \/>\nstring quotes = @&#8221;<br \/>\n&lt;fetch distinct=&#8217;false&#8217; mapping=&#8217;logical&#8217; aggregate=&#8217;true&#8217;&gt;<br \/>\n&lt;entity name=&#8217;quote&#8217;&gt;<br \/>\n&lt;attribute name=&#8217;totalamount&#8217; alias=&#8217;totalamount_sum&#8217; aggregate=&#8217;sum&#8217;\/&gt;<br \/>\n&lt;attribute name=&#8217;statecode&#8217; groupby=&#8217;true&#8217; alias=&#8217;state&#8217; \/&gt;<br \/>\n&lt;filter type=&#8217;and&#8217;&gt;<br \/>\n&lt;condition attribute=&#8217; statecode &#8216; operator=&#8217;eq&#8217; value=&#8217;won&#8217; \/&gt;&#8221;+<br \/>\n&#8220;&lt;\/filter&gt; &#8220;+<br \/>\n&#8220;&lt;\/entity&gt; &#8220;+<br \/>\n&#8220;&lt;\/fetch&gt;&#8221;;<br \/>\nEntityCollection quotes_result = _service.RetrieveMultiple(new FetchExpression(quotes));<br \/>\nforeach (var q in quotes_result.Entities)<br \/>\n{<br \/>\nDecimal wonQuoteAmount = ((Money)((AliasedValue)q[&#8220;totalamount_sum&#8221;]).Value).Value;<br \/>\n}<\/p>\n<h2 style=\"text-align: left;\"><div class=\"su-heading su-heading-style-default su-heading-align-center\" id=\"\" style=\"font-size:15px;margin-bottom:5px\"><div class=\"su-heading-inner\">Free 70% of storage space in CRM with Attachment Management Apps!<\/div><\/div><\/h2>\n<p><em><strong><a href=\"https:\/\/www.inogic.com\/product\/productivity-apps\/attach-2-dynamics-365-crm-upload-multiple-files-sharepoint-cloud-storage\" target=\"_blank\" rel=\"noopener noreferrer\">Attach2Dynamics<\/a> &#8211; Store and manage documents\/attachments in cloud storage of your choice &#8211; SharePoint, Dropbox or Azure Blob Storage from within Dynamics 365 CRM.<\/em><br \/>\n<em><strong><a href=\"https:\/\/www.inogic.com\/product\/productivity-apps\/dynamics-365-crm-sharepoint-security-metadata-sync\" target=\"_blank\" rel=\"noopener noreferrer\">SharePoint Security Sync<\/a><\/strong> \u2013 Robust and secure solution to integrate Dynamics 365 CRM and SharePoint Security Sync thereby ensuring secure access to confidential documents stored in SharePoint.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Microsoft Dynamics CRM 2011\u00a0FetchXML\u00a0includes grouping and aggregation features which let us to use aggregate functions like sum, count etc. Using Group by we can calculate sum, avg, min, max, count. But, Group by clause is not supported through LINQ in CRM. You can only specify one aggregate attribute in a query and you cannot\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2011\/04\/group-by-using-fetchxml\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[19],"tags":[123,795,797],"class_list":["post-105","post","type-post","status-publish","format-standard","hentry","category-dynamics-crm","tag-aggregation-feature","tag-fetchxml","tag-fetchxml-dynamics-crm"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=105"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/105\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}