Эта концепция называется pivoting
SQL
предполагает, что ваши данные представлены в виде отношений с фиксированной структурой.
Например, равенство - это бинарное отношение, «у клиента столько домашних животных этого типа» - это троичное отношение и т. Д.
Когда вы видите этот набор результатов:
Customer Pet Quantity
1 Dog 2
1 Cat 3
1 Rabbit 0
1 Goldfish 0
2 Dog 0
2 Cat 1
2 Rabbit 1
, на самом деле это отношение, определяемое всеми возможными комбинациями домен значений, находящихся в этом отношении.
Как, например, клиент 1
(домен customers id's
) имеет ровно 2
(домен positive numbers
) домашних животных рода dog
(домен pets
).
Мы не видим такие строки в наборе результатов:
Customer Pet Quantity
1 Dog 3
Pete Wife 0.67
, поскольку первая строка имеет значение false (клиент 1
не имеет 3
элементов dog
, но 2
), а значения второй строки находятся за пределами своих доменных областей.
SQL
парадигма подразумевает, что ваши отношения определяются, когда вы выполняете запрос, и каждая возвращаемая строка полностью определяет отношение.
SQL Server 2005+
может отображать строки в столбцы (это то, что вам нужно), но вы должны знать количество столбцов при разработке запроса (не выполняется).
Как правило, отчеты, которые вы пытаетесь создать, создаются с помощью программного обеспечения для составления отчетов, которое умеет переводить реляционные SQL
результирующие наборы в хорошо выглядящие удобочитаемые отчеты.