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 long datediff expressions.
  • use cte don't have repeat long case expressions time_to_accept andtime_to_resolve.
  • finally, left out from statement primary select; i've added from sometable placeholder.

.

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

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -