sql - How to compare temporary columns created from select in order to calculate SLA? -
this whole query have now, first part seems fine starting "y as" shows columns underlined red. have marked statements in bold shows red underline. need calculate percentage of sla not able figure out query. business hours saturday-sunday 4:30 5:30pm , mon-friday 4:30am 10:30pm.
select [job_ticket].[job_ticket_id], [job_ticket].[report_date], [job_ticket].[first_response_date], [job_ticket].close_date, ,[job_ticket].last_updated, [priority_type].[priority_type_name] 'ticket_priority' , datediff(minute, report_date,first_response_date) 'time_to_accept' , sum (case when (datediff(minute,report_date,first_response_date) <= '10' ) 1 else 0 end) "sla time_to_accept status", datediff(minute,[job_ticket].[first_response_date],[job_ticket].[close_date]) 'time_to_resolve' , (case when priority_type_name='low' sum(case when datediff(minute,[job_ticket].[first_response_date],[job_ticket].[close_date]) <= '960' 1 else 0 end ) when priority_type_name='medium' sum(case when datediff(minute[job_ticket].[first_response_date],[job_ticket].[close_date]) <= '480' 1 else 0 end ) when priority_type_name='high' sum(case when datediff(minute,[job_ticket].[first_response_date],[job_ticket]. [close_date]) <= '120' 1 else 0 end ) when priority_type_name='urgent' sum(case when datediff(minute,[job_ticket].[first_response_date],[job_ticket]. [close_date]) <= '60' 1 else 0 end) end) "closed within sla" [swhd01].[dbo].[job_ticket] inner join [swhd01].[dbo].[status_type] on [job_ticket].[status_type_id] =[status_type].[status_type_id] inner join [swhd01].[dbo].[problem_type] on [job_ticket].[problem_type_id] = [problem_type].[problem_type_id] inner join [swhd01].[dbo].[priority_type] on [job_ticket].[priority_type_id] = [priority_type].[priority_type_id] report_date not null , datediff(minute,[job_ticket].[first_response_date],[job_ticket].[close_date]) not null , datediff(minute,[job_ticket].[first_response_date],[job_ticket].[close_date]) > 0 group job_ticket_id,[job_ticket].[report_date],[job_ticket].[first_response_date], [job_ticket].close_date,[job_ticket].last_updated,[priority_type].[priority_type_name]
- since need reuse
time_to_accept,time_to_resolve, use cte don't have repeat longdatediffexpressions. - use cte don't have repeat long
caseexpressionstime_to_accept andtime_to_resolve. - finally, left out
fromstatement primaryselect; i've addedfrom sometableplaceholder.
.
with x ( select [job_ticket].[job_ticket_id], [job_ticket].[report_date], [job_ticket].[first_response_date], [job_ticket].close_date, [job_ticket].last_updated, [priority_type].[priority_type_name] 'ticket_priority', datediff(minute, report_date,first_response_date) 'time_to_accept', datediff(minute,[job_ticket].[first_response_date],[job_ticket].[close_date]) 'time_to_resolve' sometable ), y ( select x.job_ticket_id, x.report_date, x.first_response_date, x.close_date, x.last_updated, x.ticket_priority, x.time_to_accept, x.time_to_resolve, case when time_to_accept <= 10 1 else 0 end "sla time_to_accept status", case when time_to_resolve <= case priority_type_name when 'low' 960 when 'medium' 480 when 'high' 120 when 'urgent' 60 end 1 else 0 end "closed within sla" ) select y.job_ticket_id, y.report_date, y.first_response_date, y.close_date, y.last_updated, y.ticket_priority, y.time_to_accept, y.time_to_resolve, y.[sla time_to_accept status], y.[closed within sla], case when [sla time_to_accept status]=1 , [closed within sla]=1 1 else 0 end [sla compliant] y
Comments
Post a Comment