【发布时间】:2021-11-23 15:29:47
【问题描述】:
我在 MySQL 中有下表(版本 - 5.7.18-log)。
ID Old_Date Curr_Date Status Price items
ID-1 2021-07-14 2021-09-30 13:15:15 Done 1500 3
ID-1 2021-06-26 2021-09-30 13:15:15 Hold 3500 6
ID-1 2021-05-26 2021-09-30 13:15:15 In Progress 4500 1
ID-1 2021-03-04 2021-09-30 13:15:15 Done 5000 3
ID-1 2021-01-11 2021-09-30 13:15:15 Done 2800 2
从上表中,我需要获取最近 1、6 和 9 个月间隔内状态为 Done 和 Hold 的实例的计数和总和。
需要计算Old_Date和Curr_Date之间的间隔。
需要的输出-
ID 1_Month_Count 6_Month_Count 9_Month_Count 1_Month_Sum 6_Month_Sum 9_Month_Sum
ID-1 0 2 4 0 5000 12800
我尝试了以下查询,但它不起作用。
SELECT ID,
SUM(CASE WHEN TIMESTAMPDIFF(month, Old_Date, Curr_Date) <= 12
WHEN (Status IN ('Done', 'Hold') THEN SUM(ID) ELSE 0 END) AS 12_Month_Done`,
FROM Table
Group BY ID;
【问题讨论】:
-
你的月份计算逻辑是什么。示例 1(“2021-01-01”和“2021-06-28”)示例 2(“2021-01-17”和“2021-07-05”)。请检查两个示例
-
@RahulBiswas - 它基于
Curr_Date减去Old_Date以及给定条件。
标签: mysql group-by count sum case