Existem algumas maneiras de como fazer isso:
Faça um complexo de Consulta SQL, que irá agrupar os dados de acordo com as necessidades, utilizando Associações e outras formas de dados da união.
A mais fácil e a pior maneira de como fazê-lo - é estender sua tabela de dados manualmente:
dataTable.Columns.Add(new DataColumn("newColumn", typeof(string)));
Isto irá actualizar automaticamente DataGridView no formulário. E, em seguida, você vai precisar adicionar novos dados para o novo DataTable coluna manualmente.
Eu prefiro trabalhar com o dataGridView com base em modelos. Você precisa criar uma classe que irá representar o modelo. Como class Person
com propriedades: Name, Age, etc.
E, em seguida, defina esta lista como fonte de dados.
List<Person> listOfPersons = new();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = new BindingSource() { DataSource = listOfPersons};
O principal problema - você vai precisar para analisar os dados do banco de dados para o formato do modelo.
Na verdade, este é o lugar onde ORM (Mapeamento Objeto-Relacional) é útil. Existem algumas soluções prontas, como o Dapper. Ele irá simplificar a sua vida)