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 originalSELECT WK1.[Work_WorkID]
,WK1.[SubWork_Title]
,wk3.WorkAudit_Task_Title
,wk3.WorkAudit_PerformerID_Name
,wk3.Fecha_tarea
FROM [CSMAE].[ecm].[WebActiveWork] AS WK1 ,
(SELECT WorkAudit_WorkID,MAX(WorkAudit_Date) AS Fecha_tarea,WorkAudit_Status,WorkAudit_Task_Title,WorkAudit_PerformerID_Name
FROM (
SELECT WK2.[WorkAudit_WorkID]
,[WorkAudit_AuditID]
,[WorkAudit_TaskID]
,[WorkAudit_Date]
,[WorkAudit_Status]
,[WorkAudit_TaskIterNum]
,[WorkAudit_Task_Title]
,[WorkAudit_PerformerID_Name]
FROM [CSMAE].[ecm].[WAuditTrail] AS WK2
WHERE
(WK2.WorkAudit_Status=21 OR WK2.WorkAudit_Status=24) AND
WK2.WorkAudit_PerformerID_Name<>'Admin' AND
WK2.WorkAudit_PerformerID_Name IS NOT NULL
) AS t1
GROUP BY WorkAudit_WorkID, WorkAudit_Status ,WorkAudit_Task_Title, WorkAudit_PerformerID_Name
) AS WK3
WHERE
WK3.WorkAudit_WorkID=WK1.Work_WorkID AND
WK1.Work_Status=2 AND
WK1.SubWork_ReturnSubWorkID<>0 AND
WK1.SubWork_Status=1
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