select * from (select USERNAME,NICK_NAME from usertable where `LEVEL` =1) u Left JOIN (select a.`Name` ,
MAX(CASE a.`month` WHEN CONCAT('2017','-','04') THEN a.sumF ELSE 0 END) 'Apr',
MAX(CASE a.`month` WHEN CONCAT('2017','-','05') THEN a.sumF ELSE 0 END) 'May',
MAX(CASE a.`month` WHEN CONCAT('2017','-','06') THEN a.sumF ELSE 0 END) 'Jun',
MAX(CASE a.`month` WHEN CONCAT('2017','-','07') THEN a.sumF ELSE 0 END) 'Jul',
MAX(CASE a.`month` WHEN CONCAT('2017','-','08') THEN a.sumF ELSE 0 END) 'Aug',
MAX(CASE a.`month` WHEN CONCAT('2017','-','09') THEN a.sumF ELSE 0 END) 'Sep',
MAX(CASE a.`month` WHEN CONCAT('2017','-','10') THEN a.sumF ELSE 0 END) 'Oct',
MAX(CASE a.`month` WHEN CONCAT('2017','-','11') THEN a.sumF ELSE 0 END) 'Nov',
MAX(CASE a.`month` WHEN CONCAT('2017','-','12') THEN a.sumF ELSE 0 END) 'Dec',
MAX(CASE a.`month` WHEN CONCAT('2018','-','01') THEN a.sumF ELSE 0 END) 'Jan',
MAX(CASE a.`month` WHEN CONCAT('2018','-','02') THEN a.sumF ELSE 0 END) 'Feb',
MAX(CASE a.`month` WHEN CONCAT('2018','-','03') THEN a.sumF ELSE 0 END) 'Mar'
from  (select `Name`,SUM(K) as sumF,UpdateTime as `month` from manager where UpdateTime BETWEEN '2017-04' and '2018-03' and (A='通常') GROUP BY `Name`, UpdateTime) a  GROUP BY a.`Name`) k 
on k.`Name` = u.USERNAME thinkphp连接实在是没看懂

解决方案 »

  1.   

    额,如果是转thinkphp的写法,建议到php版问问。
      

  2.   

     这样的sql,你就考虑用原生的来执行了,就不用框架去做了,不方便维护,也不利于程序本来的识别。耗时耗力,得不偿失
      

  3.   

    thinkphp 支持直接 SQL 指令查询(其实 thinkphp 的伪 ORM 查询也是拼装 SQL 指令实现的)
    反倒是你的 SQL 指令写的实在让人费解
      

  4.   

    select a.`Name` ,
    MAX(CASE a.`month` WHEN CONCAT('2017','-','04') THEN a.sumF ELSE 0 END) 'Apr',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','05') THEN a.sumF ELSE 0 END) 'May',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','06') THEN a.sumF ELSE 0 END) 'Jun',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','07') THEN a.sumF ELSE 0 END) 'Jul',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','08') THEN a.sumF ELSE 0 END) 'Aug',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','09') THEN a.sumF ELSE 0 END) 'Sep',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','10') THEN a.sumF ELSE 0 END) 'Oct',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','11') THEN a.sumF ELSE 0 END) 'Nov',
    MAX(CASE a.`month` WHEN CONCAT('2017','-','12') THEN a.sumF ELSE 0 END) 'Dec',
    MAX(CASE a.`month` WHEN CONCAT('2018','-','01') THEN a.sumF ELSE 0 END) 'Jan',
    MAX(CASE a.`month` WHEN CONCAT('2018','-','02') THEN a.sumF ELSE 0 END) 'Feb',
    MAX(CASE a.`month` WHEN CONCAT('2018','-','03') THEN a.sumF ELSE 0 END) 'Mar'这种就交给PHP去做就好了