2015-11-04 38 views
-2

我使用SQL Server Management Studio的2012年和我創建了可以在下面找到一個SQL查詢:修改我的查詢,提取與最新的「logcreateddate」數據

SELECT 
    workorder.wonum as "WorkOrderNo", 
    Workorder.description as "WorkorderDescription", 
    Workorder.status as "WOstatus", 
    Workorder.reportdate as "WOReportedDate", 
    workorder.plusgmatrixprior as "WOPriority", 
    wfassignment.startdate as "WorkflowStartDate", 
    wfassignment.assigncode as "AssignedToLoginID", 
    wfassignment.description as "AssignmentDescription", 
    worklog.createby as "LogEnteredby", 
    worklog.createdate as "LogCreatedDate", 
    worklog.eventcode as "EventCode", 
    worklog.logtype as "LogType", 
    worklog.delayed as "ReasonforDelay", 
    worklog.description as "LogDescription", 
    worklog.description_long as "LoglongDescription" 
FROM 
    wfassignment, 
    workorder, 
    worklog 
WHERE 
    wfassignment.ownertable = 'workorder' 
    AND wfassignment.ownerid = workorder.workorderid 
    AND worklog.recordkey = workorder.wonum 
    AND worklog.class = workorder.woclass 
    AND workorder.siteid = 'adrd' 
    AND wfassignment.assignstatus = 'active' 
    AND wfassignment.assigncode = 'TRW4074' 
    AND worklog.createby = 'TRW4074' 
ORDER BY 
    workorder.wonum desc; 

我已經跑了查詢。輸出表包含一些行,其WorkOrderNoLogCreatedDate不同。

我想獲取以上查詢中的最新或最大的所有字段LogCreatedDate

注意:我試過使用max()函數和group by。但它不起作用,因爲其他領域不是唯一的。因此輸出包含WorkOrderNo的重複項。

請幫助修改上述查詢或提供給我建議,以獲取具有最新日期的所有字段。

回答

1

使用outer apply

SELECT 
    wo.wonum AS "WorkOrderNo", 
    wo.description AS "WorkorderDescription", 
    wo.status AS "WOstatus", 
    wo.reportdate AS "WOReportedDate", 
    wo.plusgmatrixprior AS "WOPriority", 
    wa.startdate AS "WorkflowStartDate", 
    wa.assigncode AS "AssignedToLoginID", 
    wa.description AS "AssignmentDescription", 
    wl.createby AS "LogEnteredby", 
    wl.createdate AS "LogCreatedDate", 
    wl.eventcode AS "EventCode", 
    wl.logtype AS "LogType", 
    wl.delayed AS "ReasonforDelay", 
    wl.description AS "LogDescription", 
    wl.description_long AS "LoglongDescription" 
FROM wfassignment wa 
JOIN workorder wo ON wa.ownerid = wo.workorderid 
OUTER APPLY(SELECT TOP 1 * 
      FROM worklog wl 
      WHERE wl.recordkey = wo.wonum AND 
        wl.class = wo.woclass AND 
        wl.createby = 'TRW4074' 
      ORDER BY wl.createdate DESC) wl 
WHERE wa.ownertable = 'workorder' AND 
     wo.siteid = 'adrd' AND 
     wa.assignstatus = 'active' AND 
     wa.assigncode = 'TRW4074' 
+0

謝謝主席先生,問候 –