目前有两张表,想要将表中前一天的数据的yield字段,根据machineID-programCode分组,计算求和作为表二的yield存储。(根据多字段分组 + 求和)
表一:
表二:
正确sql如下:
insert into CNC_YieldNum (machineID, programCode, yieldNum,endTime)
SELECT machineID, programCode, SUM(yield) AS yieldNum, DATE_FORMAT(endTime, '%Y-%m-%d 00:00:00') AS t
FROM CNC_Production
WHERE EndTime >= #{昨天0点}
AND EndTime < #{今天0点}
GROUP BY machineID, programCode, t
ORDER BY machineID, programCode;
利用mybatis简单实现
遇到的坑1
原语句(错误)
insert into CNC_YieldNum (machineID, programCode, yieldNum,endTime)
SELECT machineID, programCode, SUM(yield) AS yieldNum , endTime
FROM CNC_Production
WHERE EndTime >= #{昨天0点}
AND EndTime < #{今天0点}
GROUP BY machineID, programCode
ORDER BY machineID, programCode;
分组machineID, programCode 相同可以分组 ,但其endTime为不同 ,使用group by在sqlYog 执行没有错误,但是当将其写入mybatis 映射的xml文件中,运行时没有结果。所以须将endTime格式化为统一形式才行。而需求是昨日数据,保存年月日即可。
遇到的坑2
mybatis 执行插入语句失败。
忘记commit语句,没有插入结果。
sqlSession.commit();