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(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.',
    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;
