SQL - 创建数据透视表

时间:2015-05-08 06:59:33

标签: mysql sql

我正在尝试从多个表中的数据创建数据透视表,但我无法让它工作。 这是数据库结构:

enter image description here

所以表格看起来像是:

enter image description here

我想要创建的是一个数据透视表,其中包含了每个产品的客户的所有销售数据,如下所示:

enter image description here

(此数据将被输入到另一个需要此输入的系统中,因此我无法更改格式)

但是,我不知道如何做到这一点。 我试过这个:

select distinct c.name, 
       p.name,
       sum(p.price)        
FROM customer c
  left join sale s on c.customerId = s.customerId
  left outer join product p ON s.productId = p.productId
group by s.productId, s.customerId

我知道这并不多,但我很难绕过它。 任何人都可以帮助我走上正轨吗?

干杯, CJ

1 个答案:

答案 0 :(得分:0)

非常简单,您可以在语句时通过自定义案例进行调整:

select c.name, 
sum(CASE WHEN p.name = 'Product X' THEN p.price ELSE 0 END) AS "Product X",
sum(CASE WHEN p.name = 'Product Y' THEN p.price ELSE 0 END) AS "Product Y",
sum(CASE WHEN p.name = 'Product Z' THEN p.price ELSE 0 END) AS "Product Z"
    FROM customer c
      left join sale s on c.customerId = s.customerId
      left outer join product p ON s.productId = p.productId
    group by c.customerId, c.name