SQL查询矩阵结果集

时间:2018-11-19 06:18:02

标签: sql sql-server sql-server-2012

我需要一种矩阵结果集。真实情况很复杂,但是下面的示例可以做到。

让我们说我有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 :(得分:0)

您可以尝试使用数据透视

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