繁体   English   中英

GROUP_CONCAT 在不同的列中拆分 MYSQL

[英]GROUP_CONCAT split in different columns MYSQL

我正在使用 TABLE,需要逻辑帮助此查询:

SELECT DATE_FORMAT(tran_date, '%M %Y') AS month_name, 
       SUM(IF(c.ctype = 4, gl.amount * -1, 0)) AS sales,
       GROUP_CONCAT(DISTINCT(d.name)) AS d_name
FROM gl_trans AS gl, company_chart_masters AS a, 
     company_chart_types AS t, company_chart_classes AS c, dimensions as d   
WHERE (c.ctype = 4 OR c.ctype = 5) AND
      d.id = gl.dimension2_id AND
      gl.account = a.account_code AND
      a.account_type = t.id AND
      t.class_id = c.id AND
      DIMENSION2_id = gl.dimension2_id
GROUP BY month_name
ORDER BY month_name DESC

产生这个结果:

查询结果

如您所见,查询的 output 有 3 个 coloum month_name salepos的 pos 列用逗号分隔但我现在想要将 pos 拆分为不同的列(因子 matab,Rawalpindi matab,...)。

我的第二个问题是,我还拆分了销售列,就像拆分pos列一样,并相应地显示销售,并且这个销售列在拆分后也显示在不同的列中。

有没有其他方法可以拆分结果并显示列和同一行中的每个值? 在同样的结果?

预期结果:

**Month_name**,          **Factor_Matab**,          **Rawalpindi_Matab** 
feb 2020,                  25000,                     78236
mar 2020,                  26366,                     82367

由于我是堆栈溢出的新手,所以我不知道如何以表格形式显示此预期结果

为了获得您的期望,您应该使用pivot table模式:

SELECT 
    month_name,
    -- pivot table
    SUM(IF(dimension = 'Factor_Matab', sales, 0)) AS Factor_Matab,
    SUM(IF(dimension = 'Rawalpindi_Matab', sales, 0)) AS Rawalpindi_Matab
FROM (
    -- Select data grouped by month and dimension as tmp
    SELECT 
        DATE_FORMAT(tran_date, '%M %Y') AS month_name, 
        d.name AS dimension,
        SUM(IF(c.ctype = 4, gl.amount * -1, 0)) AS sales
    FROM 
        gl_trans AS gl, 
        company_chart_masters AS a, 
        company_chart_types AS t, 
        company_chart_classes AS c, 
        dimensions as d   
    WHERE (c.ctype = 4 OR c.ctype = 5) AND
        d.id = gl.dimension2_id AND
        gl.account = a.account_code AND
        a.account_type = t.id AND
        t.class_id = c.id AND
        DIMENSION2_id = gl.dimension2_id
    GROUP BY month_name, d.name
) tmp
-- group tmp table by month
GROUP BY month_name 
ORDER BY month_name DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM