Query to get the Resolution overdue time and Response overdue time for each ticket.

Query to get the Resolution overdue time and Response overdue time for each ticket.

Tested in 14620

Query:

SELECT 
ad.ORG_NAME "Account",
wo.WORKORDERID "Ticket ID",
rtdef.NAME "Request Type",
wo.RESOLVEDTIME "Resolved Time",
pd.PRIORITYNAME "Priority",

CASE WHEN wos.IS_FR_OVERDUE = '1' THEN

CASE WHEN wo.RESPONDEDTIME = 0 THEN
CONVERT(VARCHAR(20), FLOOR((DATEDIFF_BIG(MILLISECOND,'1970-01-01 00:00:00.000', getDate()) - wo.FR_DUETIME ) / (1000 * 60 * 60))) 
+ ':' + 
CONVERT(VARCHAR(20), FLOOR((DATEDIFF_BIG(MILLISECOND,'1970-01-01 00:00:00.000', getDate()) - wo.FR_DUETIME ) / (1000 * 60))%60)

ELSE 
CONVERT(VARCHAR(20), FLOOR(( wo.RESPONDEDTIME - wo.FR_DUETIME ) / (1000 * 60 * 60)) ) 
+ ':' + 
CONVERT(VARCHAR(20),FLOOR((( wo.RESPONDEDTIME - wo.FR_DUETIME ) / (1000 * 60)) % 60))
END 
)
ELSE '0'
END 
) AS "Response overdue time", 

CASE WHEN wos.ISOVERDUE = '1' THEN

CASE WHEN wo.RESOLVEDTIME = 0 THEN
CONVERT(VARCHAR(20), FLOOR((DATEDIFF_BIG(MILLISECOND,'1970-01-01 00:00:00.000', getDate()) - wo.DUEBYTIME ) / (1000 * 60 * 60))) 
+ ':' + 
CONVERT(VARCHAR(20),FLOOR((DATEDIFF_BIG(MILLISECOND,'1970-01-01 00:00:00.000', getDate()) - wo.DUEBYTIME ) / (1000 * 60))%60)
ELSE 
CONVERT(VARCHAR(20), FLOOR(( wo.RESOLVEDTIME - wo.DUEBYTIME ) / (1000 * 60 * 60)) ) 
+ ':' + 
CONVERT(VARCHAR(20),FLOOR(( ( wo.RESOLVEDTIME - wo.DUEBYTIME ) ) / (1000 * 60))%60) 
END
)
ELSE '0'
END 
) AS "Resolution overdue time"
FROM WorkOrder wo 
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID = wos.WORKORDERID
LEFT JOIN PriorityDefinitiON pd ON wos.PRIORITYID = pd.PRIORITYID
LEFT JOIN WorkOrderAccountMapping wam ON wo.WORKORDERID = wam.WORKORDERID
LEFT JOIN AccountDefinitiON ad ON wam.ACCOUNTID = ad.ORG_ID
LEFT JOIN RequestTypeDefinitiON rtdef ON wos.REQUESTTYPEID = rtdef.REQUESTTYPEID
WHERE wo.ISPARENT = '1'

                    New to ADSelfService Plus?