Quantcast
Channel: THWACK: All Content - Orion SDK
Viewing all articles
Browse latest Browse all 2677

CASE Statement in SWQL Report Query

$
0
0

I have the following query I created that works fine in SWQL Studio:

 

SELECT nd.Caption AS NodeName    , nd.NodeID    , nd.IPAddress    , nd.ObjectSubType AS PollingMethod    , nd.Description    , si.StatusName    , CASE         WHEN (SELECT MAX(evt1.EventTime) AS TimeStamp FROM Orion.Events evt1 WHERE evt1.EventType = 1 AND evt1.NetObjectID = nd.NodeID) IS NOT NULL             THEN (SELECT MAX(evt2.EventTime) AS TimeStamp FROM Orion.Events evt2 WHERE evt2.EventType = 1 AND evt2.NetObjectID = nd.NodeID)        WHEN (SELECT MAX(ae1.TimeLoggedUtc) AS TimeStamp FROM Orion.AuditingEvents ae1 WHERE ae1.ActionTypeID = 27 AND ae1.NetObjectID = nd.NodeID) IS NOT NULL            THEN (SELECT MAX(ae2.TimeLoggedUtc) AS TimeStamp FROM Orion.AuditingEvents ae2 WHERE ae2.ActionTypeID = 27 AND ae2.NetObjectID = nd.NodeID)        ELSE NULL        END        AS EventTime    , CASE         WHEN (SELECT evt4.Message AS Message                 FROM Orion.Events evt4                 WHERE evt4.EventTime = (SELECT MAX(evt5.EventTime) AS TimeStamp                                         FROM Orion.Events evt5                                         WHERE evt5.EventType = 1 AND evt5.NetObjectID = nd.NodeID)                     AND evt4.EventType = 1 AND evt4.NetObjectID = nd.NodeID                ) IS NOT NULL            THEN (SELECT evt4.Message AS Message                     FROM Orion.Events evt4                     WHERE evt4.EventTime = (SELECT MAX(evt5.EventTime) AS TimeStamp                                             FROM Orion.Events evt5                                             WHERE evt5.EventType = 1 AND evt5.NetObjectID = nd.NodeID)                         AND evt4.EventType = 1 AND evt4.NetObjectID = nd.NodeID                )        WHEN (SELECT ae4.AuditEventMessage AS TimeStamp                 FROM Orion.AuditingEvents ae4                 WHERE ae4.TimeLoggedUtc = (SELECT MAX(ae5.TimeLoggedUtc) AS TimeStamp                                             FROM Orion.AuditingEvents ae5                                            WHERE ae5.ActionTypeID = 27 AND ae5.NetObjectID = nd.NodeID)                     AND ae4.ActionTypeID = 27 AND ae4.NetObjectID = nd.NodeID                ) IS NOT NULL            THEN (SELECT ae4.AuditEventMessage AS TimeStamp                     FROM Orion.AuditingEvents ae4                     WHERE ae4.TimeLoggedUtc = (SELECT MAX(ae5.TimeLoggedUtc) AS TimeStamp                                                 FROM Orion.AuditingEvents ae5                                                WHERE ae5.ActionTypeID = 27 AND ae5.NetObjectID = nd.NodeID)                         AND ae4.ActionTypeID = 27 AND ae4.NetObjectID = nd.NodeID                )        ELSE 'Occurred more than 12 months ago.'        END        AS EventMessage
FROM Orion.Nodes nd
JOIN Orion.NodesCustomProperties ncp ON ncp.NodeID = nd.NodeID
JOIN Orion.StatusInfo si ON si.StatusId = nd.Status
WHERE ncp.Active_Node = 'TRUE' AND si.StatusName <> 'UP' AND si.StatusName <> 'External'

 

However, when I put this into a report with SWQL selected, it fails with "Query is not valid".  If I remove both CASE statements, the query in the Report succeeds but if either CASE statement, or both, are in the query, it fails with that same error.

 

Any ideas?


Viewing all articles
Browse latest Browse all 2677

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>