SELECT Active.id AS ID, Active.eventtime AS StartTimestamp, NULL AS EndTimestamp, -- still active CONCAT( LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':', LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':', LPAD(Active.duration_seconds % 60, 2, '0') ) AS Duration, CONCAT(REPLACE(Active.displaypath, '_', '-'), ' ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description, CASE Active.priority WHEN 0 THEN 'Diagnostic' WHEN 1 THEN 'Low' WHEN 2 THEN 'Medium' WHEN 3 THEN 'High' WHEN 4 THEN 'Critical' ELSE 'Unknown' END AS Priority, CONCAT( Active.displaypath, '.HMI.Alarm.', SUBSTRING_INDEX(aed.strValue, '/', -1) ) AS Tag, SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location, aed.strValue AS FullTag, Active.displaypath as Device FROM ( SELECT ae.id, ae.eventtime, ae.eventid, ae.source, ae.priority, ae.displaypath, TIMESTAMPDIFF(SECOND, ae.eventtime, NOW()) AS duration_seconds FROM alarm_events ae WHERE ae.eventtype = 0 AND NOT EXISTS ( SELECT 1 FROM alarm_events ae_clear WHERE ae_clear.eventid = ae.eventid AND ae_clear.eventtype = 1 ) AND ae.displaypath NOT LIKE '%System Startup%' AND ae.source NOT LIKE '%System Startup%' AND ( :priorityList IS NULL OR :priorityList = '' OR FIND_IN_SET(ae.priority, :priorityList) > 0 ) GROUP BY ae.id ) AS Active LEFT JOIN ( SELECT aed.id, aed.strValue FROM alarm_event_data aed WHERE aed.propname = 'myTag' GROUP BY aed.id ) AS aed ON aed.id = Active.id ORDER BY Active.eventtime DESC;