Mysql SQL将字段合并到一个表中

Mysql SQL将字段合并到一个表中,mysql,sql,group-by,sql-scripts,Mysql,Sql,Group By,Sql Scripts,有一个脚本显示两个表。字符串类型的名称和Long类型的计数。 如何将相同字段“缺货”合并到一个字段中,并将单独字段“结婚”、“重新排序”合并到一个表中的“结婚/重新排序”。在此过程中,保存两个表的类型并获取组合值​​在新的领域。以及如何不显示额外字段,例如,员工表单等。 我知道你可以用这个案例,当,然后结构。但我不明白如何在我的脚本中正确地描述它 SELECT rl.reason AS reject_reason, COUNT(*) FROM mp.reservation_log AS

有一个脚本显示两个表。字符串类型的名称和Long类型的计数。 如何将相同字段“缺货”合并到一个字段中,并将单独字段“结婚”、“重新排序”合并到一个表中的“结婚/重新排序”。在此过程中,保存两个表的类型并获取组合值​​在新的领域。以及如何不显示额外字段,例如,员工表单等。 我知道你可以用这个案例,当,然后结构。但我不明白如何在我的脚本中正确地描述它

SELECT rl.reason AS reject_reason, COUNT(*)
FROM
    mp.reservation_log AS rl
    JOIN
    mp.store AS st ON rl.store_id = st.md_id
    JOIN mp.order_item oi ON oi.reserve_id=rl.reservation_id
    JOIN mp.sku s ON s.id=oi.item_id
    JOIN mp.product p ON p.id=s.product_id
WHERE rl.created_at > DATE(NOW()) - INTERVAL 1 MONTH AND rl.is_successful=0
GROUP BY rl.reason;
表示例:

似乎您想在同一组中组合几个原因

您可以使用case表达式作为非聚合列,如下所示:

select
    case 
        when r1.reason in ('marriage', 're-sorting') then 'marriage/re-sorting'
        else r1.reason
    end real_reason,
    count(*) cnt
from ...
where rl.created_at > current_date - interval 1 month and rl.is_successful = 0
group by real_reason

旁注:日期(NOW())最好写在当前日期。

样本数据和所需结果将有助于您的问题的理解。你的问题中没有所谓的“婚姻”或“缺货”之类的,所以完全不清楚你指的是什么。此外,您的第一句话是“两个表”,但您的查询引用了五个表。是的,我附加了需要更改的输出。请注意这一点。即使在附加输出之后(不要在图片中这样做!),也不清楚您对问题的答案是什么
查询中没有所谓的“婚姻”或“缺货”之类的,因此完全不清楚您指的是什么。
我从表中获取这些字段,你能帮我把这个和我的要求结合起来吗?我经常得到很多钱mistakes@skydogs:您只需将我答案中的
替换为您的
from
子句(包括
join
s)。