需求及解决办法如下:
SELECT a.id AS id, c.sdate AS sdate, a. NAME AS NAME, ifnull(sum(c.xzuser),0) AS totalxz, ifnull(sum(c.tcount),0) AS totaljs, ifnull(sum(c.jsuser),0) AS totaluseable, ifnull(sum(c.duliuser),0) AS totaldl, ifnull(sum(c.imeiuser),0) AS totalimei, ifnull(sum(c.noimsiuser),0) AS totalnoimsi FROM tb_customercorp a INNER JOIN tb_customerapp b ON a.id = b.channelid INNER JOIN( SELECT usc.channelid AS appid, usc.sdate AS sdate, v_uj.tcount AS tcount, tuc.usercount AS jsuser, tuic.usercount AS duliuser, usc.usercount AS xzuser, (select uic.usercount from tb_userstat_imei_channelid as uic where uic.channelid = usc.channelid and uic.sdate = usc.sdate) as imeiuser, (select uiic.usercount from tb_userstat_imeiimsi_channelid as uiic where uiic.channelid = usc.channelid and uiic.sdate = usc.sdate) as noimsiuser FROM tb_userstat_channelid AS usc LEFT JOIN tb_userjs_channelid as tuc ON usc.channelid = tuc.channelid AND usc.sdate = tuc.sdate LEFT JOIN tb_userimsi_channelid as tuic ON tuc.sdate = tuic.sdate AND tuc.channelid = tuic.channelid left join ( SELECT `uj`.`appid` AS `appid`, `uj`.`sdate` AS `sdate`, sum(`uj`.`usercount`)AS `tcount` FROM `tb_userlog_jsok` `uj` WHERE uj.grade > 0 GROUP BY `uj`.`appid`, `uj`.`sdate` having uj.sdate BETWEEN '20160101' and '20160103' )AS v_uj on v_uj.appid = tuc.channelid and v_uj.sdate = tuc.sdate where usc.sdate BETWEEN '20160101' and '20160103' )c ON b.id = c.appid GROUP BY a.id,c.sdate ORDER BY c.sdate DESC