Есть несколько способов, как это сделать:
Сделайте сложный SQL-запрос, который сгруппирует данные по мере необходимости, используя объединения и другие способы объединения данных.
Самый простой и худший способ сделать это - расширить таблицу данных вручную:
dataTable.Columns.Add(new DataColumn("newColumn", typeof(string)));
Это автоматически обновит представление DataGrid в форме. А затем вам нужно будет вручную добавить новые данные в новый столбец с данными.
Я предпочитаю работать с DataGridView на основе моделей. Вам нужно создать класс, который будет представлять вашу модель. Нравится class Person
со свойствами: Name, Age, etc.
А затем установите этот список в качестве источника данных.
List<Person> listOfPersons = new();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = new BindingSource() { DataSource = listOfPersons};
Основная проблема - вам нужно будет проанализировать данные базы данных в формате модели.
На самом деле, именно здесь полезно ORM (Объектно-реляционное сопоставление). Есть несколько готовых решений, таких как Dapper. Это упростит вашу жизнь)