语句主要问题是子查询,但是又只需要取ems_evt里id最大的一个:语句如下
SELECT DATE_FORMAT( ie.EMS_EvtTime, *%b-%y* ) AS the_month, COUNT( DISTINCT (it.EMS_RefValue) ) AS total_item, SUM( ip.EMS_Item_netweight ) AS total_weight
FROM ems_itmatt AS it
LEFT JOIN ems_product AS ip ON it.id = ip.EMS_itmattid
LEFT JOIN ems_evt AS ie ON it.EMS_RefValue = ie.EMS_RefValue
LEFT JOIN ebp_operational_report AS eor ON it.EMS_GLSValue = eor.gls_num
WHERE ie.EMS_EvtSName = *EMC*
AND (eor.finaly_inboud_end_date IS NOT NULL
OR (eor.gls_finboud_date > "2014-10-28"
AND eor.stopwatch_event = ""))
AND it.EMS_GLSValue IS NOT NULL
AND ie.EMS_EvtTime >= *2014-05-01*
AND ie.EMS_EvtTime <= *2014-10-31*
AND ie.id = (
SELECT MAX( id )
FROM ems_evt
WHERE EMS_RefValue = ie.EMS_RefValue
AND EMS_EvtSName = *EMC* )
GROUP BY the_month
ORDER BY ie.EMS_EvtTime ASC
SELECT DATE_FORMAT( ie.EMS_EvtTime, *%b-%y* ) AS the_month, COUNT( DISTINCT (it.EMS_RefValue) ) AS total_item, SUM( ip.EMS_Item_netweight ) AS total_weight
FROM ems_itmatt AS it
LEFT JOIN ems_product AS ip ON it.id = ip.EMS_itmattid
LEFT JOIN ems_evt AS ie ON it.EMS_RefValue = ie.EMS_RefValue
LEFT JOIN ebp_operational_report AS eor ON it.EMS_GLSValue = eor.gls_num
WHERE ie.EMS_EvtSName = *EMC*
AND (eor.finaly_inboud_end_date IS NOT NULL
OR (eor.gls_finboud_date > "2014-10-28"
AND eor.stopwatch_event = ""))
AND it.EMS_GLSValue IS NOT NULL
AND ie.EMS_EvtTime >= *2014-05-01*
AND ie.EMS_EvtTime <= *2014-10-31*
AND ie.id = (
SELECT MAX( id )
FROM ems_evt
WHERE EMS_RefValue = ie.EMS_RefValue
AND EMS_EvtSName = *EMC* )
GROUP BY the_month
ORDER BY ie.EMS_EvtTime ASC
