想知道你们是否可以帮助我,我正在尝试将两行合并为一张这张桌子。
目前我的数据是这样的
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
如何调整查询以获取上述输出?谢谢
答案 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;
请注意,我们还必须按项目进行分组。