SELECT
ADDMONTH(MONTHDIFF(0, GETDATE()) - 1, 0) AS Month,
Nodes.Caption AS NodeName,
Nodes.DetailsUrl AS NodesDetailsUrl,
Application.Name AS ApplicationName,
Application.DetailsUrl AS ApplicationDetailsUrl,
Orion.APM.ApplicationCustomProperties.Apps_Priority AS Priority,
SUM(ApplicationStatus.PercentAvailability * ApplicationStatus.RecordCount) / SUM(ApplicationStatus.RecordCount) AS PercentAvailability
FROM Orion.APM.ApplicationStatus ApplicationStatus, Orion.APM.ApplicationCustomProperties ApplicationPriority
INNER JOIN Orion.APM.Application Application ON Application.ApplicationID = ApplicationStatus.ApplicationID
INNER JOIN Orion.Nodes Nodes ON Nodes.NodeID = Application.NodeID
INNER JOIN Orion.APM.ApplicationCustomProperties Priority ON Priority.ApplicationId = Application.ApplicationID
WHERE ApplicationStatus.TimeStamp >= ADDMINUTE(MINUTEDIFF(GETDATE(), GETUTCDATE()), ADDMONTH(MONTHDIFF(0, GETDATE()) - 1, 0)) AND
ApplicationStatus.TimeStamp < ADDMINUTE(MINUTEDIFF(GETDATE(), GETUTCDATE()), ADDMONTH(MONTHDIFF(0, GETDATE()), 0)) AND
Orion.APM.ApplicationCustomProperties.Apps_Priority = 'Critical'
GROUP BY Application.ApplicationID, Application.Name, Nodes.Caption, NodesDetailsUrl, ApplicationDetailsUrl, Orion.APM.ApplicationCustomProperties.Apps_Priority
ORDER BY Nodes.Caption, Application.Name