Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2015, 08:24
aspablogomez
 
Fecha de Ingreso: abril-2015
Ubicación: Buenos Aires
Mensajes: 5
Antigüedad: 9 años, 1 mes
Puntos: 0
Tomar el máximo de una serie de consultas

Buenos días a todos.
Les comento que estoy empezando a programar en SQL Server 2008. Mi nivel es Junior por ende sé que debo aprender bastante para llegar a optimizar las consultas que realizo.
La duda que tengo en este momento es la siguiente:

Tengo la siguiente sentencia:
Código SQL:
Ver original
  1. SELECT WK1.[Work_WorkID]
  2.       ,WK1.[SubWork_Title]
  3.       ,wk3.WorkAudit_Task_Title
  4.       ,wk3.WorkAudit_PerformerID_Name
  5.       ,wk3.Fecha_tarea
  6.       FROM [CSMAE].[ecm].[WebActiveWork] AS WK1 ,
  7.           (SELECT WorkAudit_WorkID,MAX(WorkAudit_Date) AS Fecha_tarea,WorkAudit_Status,WorkAudit_Task_Title,WorkAudit_PerformerID_Name
  8.            FROM (
  9.            
  10.               SELECT WK2.[WorkAudit_WorkID]
  11.                     ,[WorkAudit_AuditID]
  12.                     ,[WorkAudit_TaskID]
  13.                     ,[WorkAudit_Date]
  14.                     ,[WorkAudit_Status]
  15.                     ,[WorkAudit_TaskIterNum]
  16.                     ,[WorkAudit_Task_Title]
  17.                     ,[WorkAudit_PerformerID_Name]
  18.                FROM [CSMAE].[ecm].[WAuditTrail] AS WK2
  19.                WHERE
  20.                  (WK2.WorkAudit_Status=21 OR  WK2.WorkAudit_Status=24) AND  
  21.                   WK2.WorkAudit_PerformerID_Name<>'Admin' AND  
  22.                   WK2.WorkAudit_PerformerID_Name IS NOT NULL  
  23.                  
  24.                ) AS t1
  25.            GROUP BY WorkAudit_WorkID, WorkAudit_Status ,WorkAudit_Task_Title, WorkAudit_PerformerID_Name
  26.       ) AS WK3
  27.       WHERE  
  28.     WK3.WorkAudit_WorkID=WK1.Work_WorkID AND
  29.     WK1.Work_Status=2 AND
  30.     WK1.SubWork_ReturnSubWorkID<>0 AND
  31.     WK1.SubWork_Status=1
  32.    
  33. ORDER BY    WK1.[Work_WorkID],WK1.SubWork_Title, wk3.Fecha_tarea DESC


Los resultados son los siguientes


Work_WorkID ... Fecha_tarea
360846 ... 2014-12-05 15:32:30.000
360846 ... 2014-08-07 14:40:28.000
360846 ... 2014-08-07 14:32:08.000




La DB es un dolor de huevos por la cantidad de tablas que se relacionan para tomar los datos.
La idea es debo mostrar las tareas que estan pendientes y el usuario que la tiene asignada (o sea la ultima fecha).
Por medio de estas consultas consigo los ID de las tareas con las fechas de las mismas pero me trae todo el historial de dichas tareas.
Como se puede ver en la subconsulta de segundo orden busco el máximo de WorkAudit_Date pero no puedo sacar el máximo de la consulta principal (wk3.Fecha_tarea) porque me pide que lo agrupe por dicho campo al final, cosa que no pude hacer.

Alguien sabe como se tendría que hacer para fitrar solo la mayor fecha de cada Work_WorkID de los resultados traidos?

Desde ya, muchas gracias

Última edición por gnzsoloyo; 06/04/2015 a las 13:22