合并两行mysql

时间:2018-05-21 23:20:32

标签: mysql

想知道你们是否可以帮助我,我正在尝试将两行合并为一张这张桌子。

目前我的数据是这样的

    Item                Descr       Total       Proj
    Fuse                abc         0           Inventory
    Fuse - Labor        def         19415       Inventory
    Jumper              ghi         0           Inventory
    Jumper - Labor      jkl         434.14      Inventory

我希望做的是组合Desc列的行。我能够做到但它还不完全正确,我想得到总计值的行,当前查询我用它只得到总值为0的行

    SELECT 

    SUBSTRING_INDEX(Item, ' - ', 1) as lineItem,
    GROUP_CONCAT(DISTINCT Descr SEPARATOR '\n\n') as description,
    Total,
    Project

    FROM table1 
    WHERE deleted = 0
    AND Proj = "Inventory"

    GROUP BY SUBSTRING_INDEX(Item, ' - ', 1)

我尝试过的查询输出是:

    Item        Descr       Total       Proj
    Fuse        abc         0           Inventory

                def
    Jumper      ghi         0           Inventory

                jkl

我希望得到的就是这个输出:

    Item        Descr       Total       Proj
    Fuse        abc         19415       Inventory

                def
    Jumper      ghi         434.14      Inventory

                jkl

如何调整查询以获取上述输出?谢谢

2 个答案:

答案 0 :(得分:0)

我对您的查询完全感到惊讶(取决于我猜测的SQL的数据库变体),因为您在Total周围没有任何聚合函数。它似乎通过在每个组中返回Total的第一个值来解释这一点,而不是(我认为它应该)返回错误。

sum(Total)中使用Total代替SELECT,我认为它可能有用。

BTW表中的列名与查询(Project v Proj)不同,但我认为这只是一个错字。

答案 1 :(得分:0)

只要取总数之和就可以让你接近你想要的输出:

SELECT 
    SUBSTRING_INDEX(Item, ' - ', 1) AS lineItem,
    GROUP_CONCAT(DISTINCT Descr SEPARATOR '\n\n') AS description,
    SUM(Total) AS Total,
    Project
FROM table1 
WHERE deleted = 0 AND Project = 'Inventory'
GROUP BY
    SUBSTRING_INDEX(Item, ' - ', 1),
    Project;

请注意,我们还必须按项目进行分组。