SELECT 
  Active.id AS ID,
  Active.eventtime AS StartTimestamp,
  Clear.eventtime AS EndTimestamp,

  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, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
    FROM alarm_events ae
    LEFT JOIN alarm_events ae_clear 
      ON ae.eventid = ae_clear.eventid 
     AND ae_clear.eventtype = 1
    WHERE ae.eventtype = 0
      AND ae.displaypath NOT LIKE '%System Startup%'
      AND ae.source NOT LIKE '%System Startup%'
    GROUP BY ae.id
) AS Active

LEFT JOIN (
    SELECT eventid, MIN(eventtime) AS eventtime
    FROM alarm_events
    WHERE eventtype = 1
    GROUP BY eventid
) AS Clear
  ON Active.eventid = Clear.eventid

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;