Mysql SQL每月统计记录上的未结项,但仍未批准
我有一张日历表,就是这个Mysql SQL每月统计记录上的未结项,但仍未批准,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我有一张日历表,就是这个 c_calendardate 1/1/2015 2/3/2015 . . . 10/18/2015 10/19/2015 以及物料申请上的交易记录 +------------+------------+-------------+-----------+----------+ | Requestor | Item | Date_Entry | Approver | Status | +------------+------------+-----
c_calendardate
1/1/2015
2/3/2015
.
.
.
10/18/2015
10/19/2015
以及物料申请上的交易记录
+------------+------------+-------------+-----------+----------+
| Requestor | Item | Date_Entry | Approver | Status |
+------------+------------+-------------+-----------+----------+
| Bob | PCB | 1/2/2015 | Admin | Open |
| Bob | PCB | 3/19/2015 | Admin | Approved |
| May | UTP Cable | 1/1/2015 | Admin | Open |
| May | UTP Cable | 4/20/2015 | Admin | Approved |
| Joseph | RJ45 | 2/10/2015 | Admin | Open |
| Joseph | RJ46 | 6/3/2015 | Admin | Approved |
+------------+------------+-------------+-----------+----------+
我想要的输出是这个
+------------+-----------------------+
| Month | Total_Open_Each_Month |
+------------+-----------------------+
| 2015-Jan | 2 |
| 2015-Feb | 3 |
| 2015-Mar | 3 |
| 2015-Apr | 2 |
| 2015-May | 1 |
| 2015-Jun | 1 |
| 2015-Jul | 0 |
| 2015-Aug | 0 |
| 2015-Sept | 0 |
| 2015-Oct | 0 |
| 2015-Nov | 0 |
| 2015-Dec | 0 |
+------------+-----------------------+
上面的输出是每月计算每个未结项目,如果记录仍然未被批准,则仍将每月计算,有人可以帮助我查询吗?您可以使用
DATE\u FORMAT()
和groupby
SELECT
DATE_FORMAT(STR_TO_DATE(c_calendardate,'%m/%d/%Y'),'%Y-%b'),
COUNT(status)
FROM yourcalendar
LEFT JOIN materialrequest on (c_calendardate=Date_Entry AND status='Open')
GROUP BY DATE_FORMAT(STR_TO_DATE(c_calendardate,'%m/%d/%Y'),'%Y-%b');
您可以使用
DATE\u FORMAT()
和groupby
SELECT
DATE_FORMAT(STR_TO_DATE(c_calendardate,'%m/%d/%Y'),'%Y-%b'),
COUNT(status)
FROM yourcalendar
LEFT JOIN materialrequest on (c_calendardate=Date_Entry AND status='Open')
GROUP BY DATE_FORMAT(STR_TO_DATE(c_calendardate,'%m/%d/%Y'),'%Y-%b');
你可以这样试试
SELECT count(id),
STR_TO_DATE(Date_Entry, '%m/%d/%Y') as date1
MONTHNAME(STR_TO_DATE(Date_Entry, '%m/%d/%Y') ),
YEAR(STR_TO_DATE(Date_Entry, '%m/%d/%Y') )
FROM
Table_name
WHERE
Status = 'open'
group by date1
你可以这样试试
SELECT count(id),
STR_TO_DATE(Date_Entry, '%m/%d/%Y') as date1
MONTHNAME(STR_TO_DATE(Date_Entry, '%m/%d/%Y') ),
YEAR(STR_TO_DATE(Date_Entry, '%m/%d/%Y') )
FROM
Table_name
WHERE
Status = 'open'
group by date1
您有一个类似于db中的xml或html的事务行?@espongha,我很有信心,将您的html表转换为ascii表。如果这不是您想要的,请回滚编辑。您已经做了什么吗?为什么需要c_calendardate表?这是一个表格选择、按日期分组\格式和计数。@vhu感谢我花了很长时间编辑表格table@AnthonM.,我需要在一年的报告中每月显示未结项目,所以我想我需要将其引用到日历表中,你有什么好建议吗?你有一个类似于db的xml或html事务行?@espongha,我满怀信心地将HTML表转换成ascii表。如果这不是您想要的,请回滚编辑。您已经做了什么吗?为什么需要c_calendardate表?这是一个表格选择、按日期分组\格式和计数。@vhu感谢我花了很长时间编辑表格table@AnthonM.,我需要在一年的报告中每月显示未结项目,所以我想我需要将其引用到日历表中,你有什么好建议吗?谢谢你回答我的问题,但此查询仅计算当月的未结项目,我需要的是,在未批准的情况下,每月仍将计算这些项目。您的意思是,Bob在1月份请求的PCB应计算为自
Date\u Entry
到今天为止的所有月份的未结项目(NOW()
)-例如,针对1月、2月、3月,4月、6月、7月、8月、9月和10月?如果您在我的表格中提及Bob PCB请求,则应在1月、2月至3月计算,因为Bob PCB请求已于2015年3月19日获得管理员批准,并且不会在4月之后计算。对于未获得批准的项目,应如何处理?直到今天(现在())仍将计算该请求。感谢您回答我的问题,但此查询仅计算当月的未结项目,我需要的是,在尚未批准的情况下,每月仍将计算这些项目。您的意思是,Bob在1月份请求的PCB应计算为从日期\u条目
到今天为止的所有月份的未结项目(NOW()
)-例如针对1月、2月、3月、4月、6月、7月、8月、9月和10月?如果您在我的表格中提及Bob PCB请求,则应在1月计算,2月至3月,因为Bob PCB请求已于2015年3月19日获得管理员批准,并且不会在4月以后计算。对于未获得批准的项目,应如何处理?直到今天(现在())仍会计算。