mysql - Mysql中行数据动态转换为列数据

标签 mysql pivot-table

我已将查询编写为

    SELECT  c.customer_name, o.net_total,
  GROUP_CONCAT(
      'SUM(IF(ps.product_sku_name = ''',
      product_sku_name,
      ''',  o.net_total,0)) AS ',
      product_sku_name

  ) 
FROM products_sku ps
LEFT JOIN products  AS p
                    ON p.product_id = ps.product_id
                    left join order_lines ol on ol.product_sku_id = ps.product_sku_id 
                    left join orders o on o.order_id = ol.order_id
                    left join customers c on c.customer_id = o.customer_id
                   GROUP BY ps.product_sku_id

得到的结果为

customer_name     net_total    GROUP_CONCAT( 'SUM(IF(ps.product_sku_name = ''', product_sku_name, ''', o.net_total,0)) AS ', product_sku_name )
Customer2         126.0000     SUM(IF(ps.product_sku_name = 'PSKU Name 1',  o.net_total,0)) AS PSKU Name 1,SUM(IF(ps.product_sku_name = 'PSKU Name 1',  o.net_total,0)) AS PSKU Name 1,SUM(IF(ps.product_sku_name = 'PSKU Name 1',  o.net_total,0)) AS PSKU Name 1
Customer1         105.0000     SUM(IF(ps.product_sku_name = 'PSKU Name2',  o.net_total,0)) AS PSKU Name2
NULL              NULL         SUM(IF(ps.product_sku_name = 'PSKU Name3',  o.net_total,0)) AS PSKU Name3
NULL              NULL        SUM(IF(ps.product_sku_name = 'Product SKU 4',  o.net_total,0)) AS Product SKU 4
Customer1         945.0000    SUM(IF(ps.product_sku_name = 'PSKU Name4',  o.net_total,0)) AS PSKU Name4
Customer1         2159.3600   SUM(IF(ps.product_sku_name = 'Jordon',  o.net_total,0)) AS Jordon,SUM(IF(ps.product_sku_name = 'Jordon',  o.net_total,0)) AS Jordon

我期望结果为

customer_name       PSKU Name 1    PSKU Name 2    PSKU Name 3  PSKU Name 4 Jordon    
Customer2           126            NULL           NULL         NULL        NULL
Customer1           NULL           105            NULL         945         2159

我已提及MySQL pivot table query with dynamic columns进行此查询的站点

请回复...提前致谢

最佳答案

您的尝试已成功构建查询。但是您需要一个存储过程来构建并执行它。

参见http://mysql.rjweb.org/doc.php/pivot对于这样的代码。

关于mysql - Mysql中行数据动态转换为列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641165/

相关文章:

php - PHP/MySQL 数据透视表

python - 使用 Python 将列表转换为数据透视表

MySQL 数据透视表

excel - 如何通过 Python win32 将计算成员添加到数据透视表

php - 使用最少的资源使用数据库检查唯一的随机值

php - 按日期捆绑信息

mysql - Hive 连接多个表和 where 语句

mysql - 你如何在 MySQL 中按小时增量分组?

mysql执行查询性能低下

dataframe - 可在 Julia 的多个列中进行透视