# Grouping | WPF Controls | DevExpress Documentation

This article describes how to group values of a Pivot Grid’s column and row fields bound to data source columns. These techniques are applicable in [Optimized](/CoreLibraries/401367/devexpress-pivot-grid-core-library/pivot-grid-modes/in-memory-mode/pivot-grid-optimized-calculation-engine) and [Server](/CoreLibraries/403803/devexpress-pivot-grid-core-library/pivot-grid-modes/server-mode) data processing modes.

Use [PivotGridField.GroupInterval](/WPF/DevExpress.Xpf.PivotGrid.PivotGridField.GroupInterval) for **Legacy** or **LegacyOptimized** data processing mode.

## Grouping Overview

Pivot Grid allows you to group field values into bigger categories (ranges). For example, values of a column/row field that displays date/time data can be grouped by year, month, quarter, and so on. Numeric values can be grouped into numeric ranges, and string values can be grouped by the initial character(s) of the values. 

Grouping is not supported in [OLAP](/CoreLibraries/403809/devexpress-pivot-grid-core-library/pivot-grid-modes/olap-mode) mode.

The following image demonstrates how the Pivot Grid groups values of the *Order Date* column field by month:

![pivotgrid_GroupIntervals](/WPF/images/pivotgrid_groupintervals11555.png)

You can bind multiple Pivot Grid fields to the same data source field, and group values of these Pivot Grid fields independently of each other. The image below shows two column fields that are bound to the *Order Date* data source field, and grouped by years and months, respectively.

![pivotgrid_groupInterval_YearMonth](/WPF/images/pivotgrid_groupinterval_yearmonth11556.png)

To group values of column or row fields, set the field’s group interval ([DataSourceColumnBinding.GroupInterval](/WPF/DevExpress.Xpf.PivotGrid.DataSourceColumnBinding.GroupInterval)).

[Run Demo: Interval Grouping](dxdemo://Wpf/DXPivotGrid/MainDemo/IntervalGrouping) 

### Group Date-Time Values

When you group date-time field values, you can set the [GroupInterval](/WPF/DevExpress.Xpf.PivotGrid.DataSourceColumnBinding.GroupInterval) property to one of the following options:

- Date
- DateDay
- DateDayOfWeek
- DateDayOfYear
- DateWeekOfMonth
- DateWeekOfYear
- DateMonth
- DateQuarter
- DateYear
- YearAge
- MonthAge
- WeekAge
- DayAge
- Hour
- Minute
- Second
- DateMonthYear
- DateQuarterYear
- DateHour
- DateHourMinute
- DateHourMinuteSecond
- DateWeekYear

You can use the [DataSourceColumnBinding.GroupIntervalNumericRange](/WPF/DevExpress.Xpf.PivotGrid.DataSourceColumnBinding.GroupIntervalNumericRange) property to specify the length of the following intervals:

- YearAge
- MonthAge
- WeekAge
- DayAge

### Group Numeric Values

Set the [GroupInterval](/WPF/DevExpress.Xpf.PivotGrid.DataSourceColumnBinding.GroupInterval) property to `Numeric` to group numeric values. Use the [GroupIntervalNumericRange](/WPF/DevExpress.Xpf.PivotGrid.DataSourceColumnBinding.GroupIntervalNumericRange) property to specify the length of the intervals. For instance, if the `GroupIntervalNumericRange` property is set to 100, the values are combined into the following intervals: 0-100, 101-200, 201-300, and so on.

### Group String Values (Alphabetically)

String values can be combined into groups alphabetically by the first letter. For this, set the [DataSourceColumnBindingBase.GroupInterval](/CoreLibraries/DevExpress.PivotGrid.DataBinding.DataSourceColumnBindingBase.GroupInterval) property to `Alphabetical`.

## Custom Group Intervals

You can also implement custom group intervals. To do this, assign a [calculated expression](/WPF/8025/controls-and-libraries/pivot-grid/binding-to-data/in-memory-mode/Optimized-Mode/bind-pivot-grid-fields-to-calculated-expressions) to a field as follows:

1. Create a Pivot Grid field.
2. Create an [ExpressionDataBinding](/WPF/DevExpress.Xpf.PivotGrid.ExpressionDataBinding) instance.
3. Initialize the `ExpressionDataBinding` object with an expression that calculates aggregated field values. You can address Pivot Grid fields in this expression by their names ([Name](/WPF/DevExpress.Xpf.PivotGrid.PivotGridField.Name)).
4. Assign the created object to the field’s [DataBinding](/WPF/DevExpress.Xpf.PivotGrid.PivotGridField.DataBinding) property.

Handle the [PivotGridControl.CustomGroupInterval](/WPF/DevExpress.Xpf.PivotGrid.PivotGridControl.CustomGroupInterval) event in Legacy and LegacyOptimized modes.

## Example: How to Group Date-Time Values

This example shows how to group date-time values.

[View Example](https://github.com/DevExpress-Examples/wpf-pivot-grid-group-date-time-values)

- MainWindow.xaml

<section id="tabpanel_YSTJmsCHSn_tabid-xamlMainWindow-xaml" role="tabpanel" data-tab="tabid-xamlMainWindow-xaml">
<pre><code data-highlight-lines="[[11],[17],[22]]" class="lang-xaml">&lt;Window x:Class=&quot;HowToBindToMDB.MainWindow&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
        xmlns:dxpg=&quot;http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid&quot;
        Title=&quot;MainWindow&quot; Height=&quot;350&quot; Width=&quot;525&quot;  Loaded=&quot;Window_Loaded&quot;&gt;
    &lt;Grid&gt;
        &lt;dxpg:PivotGridControl Name=&quot;pivotGridControl1&quot; DataProcessingEngine=&quot;Optimized&quot;&gt;
            &lt;dxpg:PivotGridControl.Fields&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldYear&quot; Area=&quot;RowArea&quot; Caption=&quot;Year&quot;&gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;OrderDate&quot; GroupInterval=&quot;DateYear&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldQuarter&quot; Area=&quot;RowArea&quot; Caption=&quot;Quarter&quot;
                                     ValueFormat=&quot;Qtr {0}&quot; &gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;OrderDate&quot; GroupInterval=&quot;DateQuarter&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldMonth&quot; Area=&quot;RowArea&quot; Caption=&quot;Month&quot; &gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;OrderDate&quot; GroupInterval=&quot;DateMonth&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldExtendedPrice&quot; Area=&quot;DataArea&quot; CellFormat=&quot;c0&quot; &gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;Extended Price&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
            &lt;/dxpg:PivotGridControl.Fields&gt;
        &lt;/dxpg:PivotGridControl&gt;
    &lt;/Grid&gt;
&lt;/Window&gt;
</code></pre></section>

## Example: Custom Group Intervals

This example shows how to implement custom group intervals in Pivot Grid to group axis values.

[View Example](https://github.com/DevExpress-Examples/wpf-pivot-custom-group-intervals)

- MainWindow.xaml

<section id="tabpanel_UOL4pm3WlZ_tabid-xamlMainWindow-xaml" role="tabpanel" data-tab="tabid-xamlMainWindow-xaml">
<pre><code data-highlight-lines="[[15]]" class="lang-xaml">&lt;Window xmlns:dxpg=&quot;http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
        Title=&quot;MainWindow&quot; Height=&quot;350&quot; Width=&quot;525&quot;
        x:Class=&quot;HowToBindToMDB.MainWindow&quot;
        Loaded=&quot;Window_Loaded&quot;&gt;
    &lt;Grid&gt;
        &lt;dxpg:PivotGridControl DataProcessingEngine=&quot;Optimized&quot;
                               HorizontalAlignment=&quot;Left&quot; Name=&quot;pivotGridControl1&quot;
                               VerticalAlignment=&quot;Top&quot;&gt;
            &lt;dxpg:PivotGridControl.Fields&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldProductGroup&quot; Area=&quot;RowArea&quot;
                                     Caption=&quot;Product Group&quot;&gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:ExpressionDataBinding Expression=&quot;Iif(Substring([fieldProductName], 0, 1) &amp;lt; &#39;F&#39;, &#39;A-E&#39;, Substring([fieldProductName], 0, 1) &amp;lt; &#39;T&#39;, &#39;F-S&#39;, &#39;T-Z&#39;)&quot; /&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldProductName&quot; Area=&quot;RowArea&quot;
                                     Caption=&quot;Product Name&quot; &gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;ProductName&quot; /&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldExtendedPrice&quot;
                                     Area=&quot;DataArea&quot; CellFormat=&quot;c0&quot;&gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;Extended Price&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
                &lt;dxpg:PivotGridField Name=&quot;fieldCountry&quot;
                                     Area=&quot;ColumnArea&quot; &gt;
                    &lt;dxpg:PivotGridField.DataBinding&gt;
                        &lt;dxpg:DataSourceColumnBinding ColumnName=&quot;Country&quot;/&gt;
                    &lt;/dxpg:PivotGridField.DataBinding&gt;
                &lt;/dxpg:PivotGridField&gt;
            &lt;/dxpg:PivotGridControl.Fields&gt;
        &lt;/dxpg:PivotGridControl&gt;
    &lt;/Grid&gt;
&lt;/Window&gt;
</code></pre></section>