Mysql SQL-创建数据透视表

Mysql SQL-创建数据透视表,mysql,sql,Mysql,Sql,我正试图从许多表中的数据创建一个透视表,但无法使其正常工作。 这是数据库结构: 所以这些表看起来像: 我要创建的是一个数据透视表,它将每个产品的所有客户销售数据组合在一起,如下所示: (这些数据将被输入到另一个需要输入的系统中,因此我无法更改格式) 然而,我不知道如何做到这一点。 我试过这个: select distinct c.name, p.name, sum(p.price) FROM customer c left join sal

我正试图从许多表中的数据创建一个透视表,但无法使其正常工作。 这是数据库结构:

所以这些表看起来像:

我要创建的是一个数据透视表,它将每个产品的所有客户销售数据组合在一起,如下所示:

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

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

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

非常简单,您可以在以下语句中按自定义大小写进行转换:

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

您可能有多少个产品?SQL无法在没有过度欺骗的情况下透视任意数量的列。是否可以选择在客户端应用程序中进行透视?2个问题,我可能可以帮助您:1。是否有存储此结果的新表?2.您知道存储过程是什么吗?您能使用它们吗?常规GROUPBY规则说:如果指定GROUPBY子句,选择列表中的每个列引用必须标识一个分组列或是一个集合函数的参数。我看到这种工作的唯一方式是在用户表和产品表中循环,并在使用存储过程时将每个用户的每个产品的计数行插入到一个新表中