SELECT m.project, STR_TO_DATE(CONCAT(m.YEAR, '-', LPAD(m.MONTH, 2, '0'),'-01'), '%Y-%m-%d') AS "时间", d.`数据修改`, COUNT(*) AS total_count, COUNT(CASE WHEN m.env = '生产常规-PRD' THEN 1 END) AS '生产常规-PRD', COUNT(CASE WHEN m.env = '生产修复-FIX' THEN 1 END) AS '生产修复-FIX', COUNT(CASE WHEN m.env = '关联系统影响' THEN 1 END) AS '关联系统影响', COUNT(CASE WHEN m.env = '业务紧急需求' THEN 1 END) AS '业务紧急需求' FROM ops_month_record m JOIN (SELECT SUM(DATA) AS '数据修改',project ,DATETIME FROM ops_daily_record GROUP BY project, DATE_FORMAT(DATETIME,'%Y%m') ) d ON m.`project`=d.`project` AND DATE_FORMAT(STR_TO_DATE(CONCAT(m.YEAR, '-', LPAD(m.MONTH, 2, '0')), '%Y-%m'), '%Y-%m')=DATE_FORMAT(d.`datetime`, '%Y-%m') GROUP BY project, MONTH WHERE project='SFA项目'; 该语句如何修改才不会报错?
时间: 2024-01-12 08:05:02 浏览: 95
重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件
要修正这个查询语句,你需要将 `WHERE` 子句放在 `GROUP BY` 子句之前。
下面是修改后的查询语句:
```sql
SELECT
m.project,
STR_TO_DATE(CONCAT(m.YEAR, '-', LPAD(m.MONTH, 2, '0'),'-01'), '%Y-%m-%d') AS "时间",
d.`数据修改`,
COUNT(*) AS total_count,
COUNT(CASE WHEN m.env = '生产常规-PRD' THEN 1 END) AS '生产常规-PRD',
COUNT(CASE WHEN m.env = '生产修复-FIX' THEN 1 END) AS '生产修复-FIX',
COUNT(CASE WHEN m.env = '关联系统影响' THEN 1 END) AS '关联系统影响',
COUNT(CASE WHEN m.env = '业务紧急需求' THEN 1 END) AS '业务紧急需求'
FROM ops_month_record m
JOIN (SELECT SUM(DATA) AS '数据修改', project, DATETIME FROM ops_daily_record GROUP BY project, DATE_FORMAT(DATETIME,'%Y%m')) d
ON m.`project`=d.`project` AND DATE_FORMAT(STR_TO_DATE(CONCAT(m.YEAR, '-', LPAD(m.MONTH, 2, '0')), '%Y-%m'), '%Y-%m')=DATE_FORMAT(d.`datetime`, '%Y-%m')
WHERE m.project='SFA项目'
GROUP BY m.project, m.MONTH;
```
修改后的语句将 `WHERE` 子句移动到了 `GROUP BY` 子句之前,并且将 `GROUP BY` 子句中的 `project` 改为 `m.project`,`MONTH` 改为 `m.MONTH`。
请注意,修改后的语句中的 `WHERE` 子句中的表别名也需要与 `FROM` 子句中的表别名保持一致。
阅读全文