Hello All,
Has anybody before been able to using SQL identify where a ticket is assigned (SVD) to at the point when the ticket has breached?
If so would you be kind enough to share this with me
Hello All,
Has anybody before been able to using SQL identify where a ticket is assigned (SVD) to at the point when the ticket has breached?
If so would you be kind enough to share this with me
WITH inc as (SELECT
incident.incident_id,
(CASE WHEN inc_data.u_date1 IS NOT NULL THEN inc_data.earliest_sla_resolve_due ELSE incident.inc_resolve_due END) breach_date, --Due/breach date. This takes into account stopped clocks
(SELECT TOP 1 act_reg.date_actioned FROM act_reg WHERE act_reg.incident_id = incident.incident_id AND act_reg.act_type_id IN (4, 5) AND act_reg.date_actioned <= (CASE WHEN inc_data.u_date1 IS NOT NULL THEN inc_data.earliest_sla_resolve_due ELSE incident.inc_resolve_due END) ORDER BY act_reg.date_actioned DESC) last_resolve_or_close_date, --before or on the breach date
(SELECT TOP 1 act_reg.date_actioned FROM act_reg WHERE act_reg.incident_id = incident.incident_id AND act_reg.act_type_id = 6 AND act_reg.date_actioned <= (CASE WHEN inc_data.u_date1 IS NOT NULL THEN inc_data.earliest_sla_resolve_due ELSE incident.inc_resolve_due END) ORDER BY act_reg.date_actioned DESC) last_reopen_date --before or on the breach date
FROM
incident
INNER JOIN inc_data ON incident.incident_id = inc_data.incident_id
) --All events (modify as required)
SELECT
inc.incident_id,
(CASE WHEN inc.breach_date is not null --Has a breach date
AND
inc.breach_date <= getDate() --Before now else it hasn't breached yet
AND (
(last_reopen_date IS NULL AND last_resolve_or_close_date IS NULL) --Never closed or resolved or reopened by the breach date
OR
(last_resolve_or_close_date < last_reopen_date) --Reopened
) --Is open on breach date
THEN
(SELECT TOP 1 act_reg.ass_svd_id FROM act_reg WHERE act_reg.incident_id = inc.incident_id AND act_reg.act_type_id = 1 AND act_reg.date_actioned <= inc.breach_date ORDER BY act_reg.date_actioned DESC) --Last assignment before or on the breach date
ELSE NULL END) svd_id_at_breach
FROM
inc
If you are using Oracle you need to modify all the subqueries with “TOP 1”s with a nested subquery and use rownum = 1:
e.g.: (SELECT TOP 1 act_reg.ass_svd_id FROM act_reg WHERE act_reg.incident_id = inc.incident_id AND act_reg.act_type_id = 1 AND act_reg.date_actioned <= inc.breach_date ORDER BY act_reg.date_actioned DESC)
becomes:
(SELECT * FROM (SELECT act_reg.ass_svd_id FROM act_reg WHERE act_reg.incident_id = inc.incident_id AND act_reg.act_type_id = 1 AND act_reg.date_actioned <= inc.breach_date ORDER BY act_reg.date_actioned DESC) WHERE rownum = 1)
Also you will need to replace getDate() with SYSDATE
Paul Cooper
Software Engineer/Reports Designer
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.