2013-05-16 66 views
0

我使用下面的查詢:如何使用子查詢得到的結果我想

select distinct a.idclientecrm, 
(case 
when max(c.fcierre) is null then max(c.falta) 
else max(c.fcierre) 
end) as ultima_tarea, 
d.nombre 
from clientescrmporlistadeclientescrm a 
inner join clientescrmporlistadeclientescrm b on a.idclientecrm = b.idclientecrm 
inner join tareas c on a.idclientecrm = c.idclientecrm 
inner join resultadosdetareas d on c.idresultadodetarea=d.idresultadodetarea 
inner join clientescrm e on a.idclientecrm=e.idclientecrm 
where b.idlistadeclientescrm = 70 
and a.idlistadeclientescrm = 58 
and e.fbaja is null 
group by a.idclientecrm,d.nombre 
limit 10 

這給了我下面的結果。

|| *idclientecrm* || *ultima_tarea* || *nombre* || 
|| 10149991 || 2013-02-05 13:55:50 || Llamar cualquier agente || 
|| 10149991 || 2013-01-04 00:00:00 || Llamar mismo agente || 
|| 10149991 || 2013-04-23 14:47:05 || Ocupado || 
|| 10150908 || 2012-12-20 00:00:00 || Llamar cualquier agente || 
|| 10150908 || 2013-01-04 00:00:00 || Llamar mismo agente || 
|| 10150908 || 2012-11-29 00:00:00 || Venta || 
|| 10151225 || 2013-01-22 09:06:26 || Llamar cualquier agente || 
|| 10151225 || 2013-03-12 10:53:10 || Ocupado || 
|| 10151226 || 2012-07-04 00:00:00 || Llamar mismo agente || 
|| 10151226 || 2012-09-25 00:00:00 || Venta || 

我想這個子查詢給我這樣的結果:

|| *idclientecrm* || *ultima_tarea* || *nombre* || 
|| 10149991 || 2013-04-23 14:47:05 || Ocupado || 
|| 10150908 || 2013-01-04 00:00:00 || Llamar mismo agente || 
|| 10151225 || 2013-03-12 10:53:10 || Ocupado || 
|| 10151226 || 2012-09-25 00:00:00 || Venta || 

我不知道如果一個子查詢做到這一點還是唯一的方式,如果我原來的查詢可以進行修改,以獲得結果。

如果這個例子不清楚,我想每個idclientecrm最近的塔里亞與它的通訊名稱。從resultadosdetareas獲取tarea的名稱。

如果任何人有類似的例子,也許我可以適應我的查詢。

在此先感謝!

回答

1

您正在尋找獲得groupwise maximum,儘管在列的組合:

SELECT c.idclientecrm, 
     IFNULL(t.fcierre, t.falta) ultima_tarea, 
     d.nombre 

FROM  tareas c 
    JOIN (
      SELECT idclientecrm, 
        MAX(fcierre) fcierre, 
        MAX(falta ) falta 
      FROM  tareas 
      GROUP BY idclientecrm 
     ) t USING (idclientecrm) 
    JOIN resultadosdetareas d USING (idresultadodetarea) 

WHERE IF(t.fcierre IS NULL, t.falta=c.falta, t.fcierre=c.fcierre) 

GROUP BY c.idclientecrm 
+0

完美,正是我需要的。日Thnx! – Pietro

相關問題