SQL-запрос для матрицы результатов - PullRequest
0 голосов
/ 19 ноября 2018

Мне нужен вид набора результатов матрицы. Реальный случай вполне завершен, но подойдет следующий пример.

Допустим, у меня есть 3 таблицы:

Customers
- ID
- Name

Products
- ID
- Name

Purchases
- ID
- Customers_ID
- Products_ID
- Amount

Теперь мне нужен результат с вертикальными потребителями, по горизонтали (в виде полей) продуктов и по каждому клиенту / продукту проданной суммы.

Так что-то вроде этого:

Customers.Name&nbsp;Prod#1     Prod#2    Prod#3<br>
Customer #1         10          5       300<br>
Customer #2          5          1        10<br>
Customer #3         50         12        23<br>

Как я могу сделать это в SQL Server (любая версия)

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете попробовать использовать pivot

select customername,[Prod1],[Prod2],[Prod3] from
(
select c.name as customername,p1.name as productname, Amount from purchases p
left join customers c on p.Customers_ID=c.id
left join products p1 on p.Products_ID-p1.ID
) a
pivot(max(amount) for productname in ([Prod1],[Prod2],[Prod3])) pv
...