gpt4 book ai didi

MySQL 如何使用 CASE 语句作为列而不是行按日期进行分组

转载 作者:行者123 更新时间:2023-11-29 17:06:07 25 4
gpt4 key购买 nike

不确定我是否正确地问了这个问题。我有一个查询,尝试根据另一个表的数量值显示每个 Reason_id 的总计,然后在存在 Reason_id 的表中按月份进行分组。

到目前为止我的查询是:

select
month(f.c_date),
case when q.reason_id = 2 then sum(f.produced) else 0 end as 'LowM',
case when q.reason_id = 3 then sum(f.produced) else 0 end as 'LowP',
case when q.reason_id = 4 then sum(f.produced) else 0 end as 'LowSC',

from freeze f
inner join freezeq q on f.id = q.frz_id
inner join location l on f.t_id = l.id

where 1=1
and f.c_date like '%2018%'
group by q.reason_id, month(f.c_date);

我需要删除“group by q.reason_id”,但当然 SUM 值不会分开。

我试图将 CASE 显示为列以及 f.productd 值的总和,但按 f.c_date 进行分组。

我尝试了几种不同的方式来使用子查询,但似乎无法得到它。

我感谢集体智慧能给我的任何帮助!

谢谢!

最佳答案

您似乎想要使用条件聚合函数,请在sum函数中使用case when

select
month(f.c_date),
sum(case when q.reason_id = 2 then f.produced) else 0 end) as 'LowM',
sum(case when q.reason_id = 3 then f.produced else 0 end) as 'LowP',
sum(case when q.reason_id = 4 then f.produced else 0 end) as 'LowSC'
from freeze f
inner join freezeq q on f.id = q.frz_id
inner join location l on f.t_id = l.id
where f.c_date like '%2018%'
group by month(f.c_date);

注意

我删除了 1=1 和,因为您的查询中没有任何意义。

关于MySQL 如何使用 CASE 语句作为列而不是行按日期进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com