SELECT name, COUNT(id) AS c, SUM(IF (DATEDIFF(n, server_date, 
      server_finish_date) > 240 THEN ww = 240 ELSE ww = (DATEDIFF(n, server_date, 
      server_finish_date)) AS mm
FROM workrecord
GROUP BY name
ORDER BY mm我想实现当(DATEDIFF(n, server_date, server_finish_date) > 240
就按240来求和,如果小于就用DATEDIFF(n, server_date, server_finish_date)来求和请高手指教,如何实现,谢谢!!

解决方案 »

  1.   

    用case when else end实现
      

  2.   

    SELECT   name,   COUNT(id)   AS   c,   SUM(IF   (DATEDIFF(n,   server_date,   
                server_finish_date)   >   240   THEN  240   ELSE  (DATEDIFF(n,   server_date,   
                server_finish_date))   AS   mm 
    FROM   workrecord 
    GROUP   BY   name 
    ORDER   BY   mm 
      

  3.   

    SELECT   name,COUNT(id)   AS   c,
    SUM(case when DATEDIFF(n,server_date,server_finish_date)>240 THEN 240 ELSE DATEDIFF(n,server_date,server_finish_date)) AS   mm 
    FROM   workrecord 
    GROUP   BY   name 
    ORDER   BY   mm 
      

  4.   

    SELECT       name,       COUNT(id)       AS       c,       SUM(case when       (DATEDIFF(n,   server_date,   server_finish_date)       >       240       THEN     240       ELSE     (DATEDIFF(n,       server_date, server_finish_date))       AS       mm   
    FROM       workrecord   
    GROUP       BY       name   
    ORDER       BY       mm 
      

  5.   


    SELECT   name,   
    COUNT(id)   AS   c,   
    SUM(case when DATEDIFF(n,server_date,server_finish_date)   >   240   THEN   240   ELSE   DATEDIFF(n,server_date,server_finish_date) end)   AS   mm 
    FROM   workrecord 
    GROUP   BY   name 
    ORDER   BY   mm 
      

  6.   

    少了个东西:SELECT   name,COUNT(id)   AS   c,
    SUM(case when DATEDIFF(n,server_date,server_finish_date)>240 THEN 240 ELSE DATEDIFF(n,server_date,server_finish_date ) end) AS   mm 
    FROM   workrecord 
    GROUP   BY   name 
    ORDER   BY   mm