cancel
Showing results for 
Search instead for 
Did you mean: 
Create Post
Level 11

SQL Component Status for two Components on same Node

Hello,

I'm working on a SQL query and I'm not getting the results that I need.  I'm trying to get the custom table widget to supply the component status for two different component names for the same node.  I'm getting the below results, but it's showing duplicate entries.Capture.PNG

SQL Query:

SELECT n.statusled AS 'Status', 
       n.caption   AS 'Device', 
       CASE 
         WHEN Substring(ca.multivaluestatistics, 
              Charindex('A', ca.multivaluestatistics) + 4, 
                     ( ( ( Len(ca.multivaluestatistics) ) - Charindex(':', 
              Reverse(ca.multivaluestatistics)) ) - 
                       Charindex(',', ca.multivaluestatistics) 
              - 5 )) = 'N' THEN '0  minutes' 
         ELSE Concat(Substring(ca.multivaluestatistics, 
                            Charindex(':', ca.multivaluestatistics) + 1, 
                                   ( ( ( Len(ca.multivaluestatistics) ) - 
                                       Charindex(',', 
                     Reverse(ca.multivaluestatistics)) ) - 
                                     Charindex(':', ca.multivaluestatistics) 
                     - 3 )), '  minutes') 
       END         AS Age, 
       CASE 
         WHEN Substring(ca.multivaluestatistics, 
              Charindex('C', ca.multivaluestatistics) + 6, 
                     ( ( ( Len(ca.multivaluestatistics) ) - Charindex('.', 
              Reverse(ca.multivaluestatistics)) ) - 
                       Charindex('C', ca.multivaluestatistics) 
              - 5 )) LIKE 'N%' THEN '0' 
         ELSE Substring(ca.multivaluestatistics, 
              Charindex('C', ca.multivaluestatistics) + 6, 
                     ( ( ( Len(ca.multivaluestatistics) ) - Charindex('.', 
              Reverse(ca.multivaluestatistics)) ) - 
                       Charindex('C', ca.multivaluestatistics) 
              - 5 )) 
       END         AS Count, 
       CASE 
         WHEN Substring(ca.multivaluemessages, 
              Charindex('A', ca.multivaluemessages) + 
              4, ( ( 
                     ( Len(ca.multivaluemessages) ) 
                     - 
                     Charindex(':', Reverse(ca.multivaluemessages)) 
              ) 
              - Charindex('M', ca.multivaluemessages) )) LIKE 'N/A%' THEN 
         '0 files were found in the directory' 
         ELSE Substring(ca.multivaluemessages, 
              Charindex('A', ca.multivaluemessages) + 
              4, ( ( 
                     ( Len(ca.multivaluemessages) ) 
                     - 
                     Charindex(':', Reverse(ca.multivaluemessages)) 
              ) 
              - Charindex('M', ca.multivaluemessages) ) + 100) 
       END         AS Count_Info, 
       n.bca_app_owner, 
       CASE 
         WHEN ad.componentname LIKE 'Custom Windows File Age%' 
              AND ad.componentstatus = 'Down' THEN 'Down.gif' 
         WHEN ad.componentname LIKE 'Custom Windows File Age%' 
              AND ad.componentstatus = 'Critical' THEN 'Critical.gif' 
         WHEN ad.componentname LIKE 'Custom Windows File Age%' 
              AND ad.componentstatus = 'Unreachable' THEN 'Unreachable.gif' 
         WHEN ad.componentname LIKE 'Custom Windows File Age%' 
              AND ad.componentstatus = 'Warning' THEN 'Warning.gif' 
         WHEN ad.componentname LIKE 'Custom Windows File Age%' 
              AND ad.componentstatus = 'Unknown' THEN 'Warning.gif' 
         ELSE 'Up.gif' 
       END         AS 'File Status', 
       ad.componentname, 
       ad.componentstatus, 
       CASE 
         WHEN ad.componentname LIKE '%Epic BCA%' 
              AND ad.componentstatus = 'Down' THEN 'Down.gif' 
         WHEN ad.componentname LIKE '%Epic BCA%' 
              AND ad.componentstatus = 'Critical' THEN 'Critical.gif' 
         WHEN ad.componentname LIKE '%Epic BCA%' 
              AND ad.componentstatus = 'Unreachable' THEN 'Unreachable.gif' 
         WHEN ad.componentname LIKE '%Epic BCA%' 
              AND ad.componentstatus = 'Warning' THEN 'Warning.gif' 
         WHEN ad.componentname LIKE '%Epic BCA%' 
              AND ad.componentstatus = 'Unknown' THEN 'Warning.gif' 
         ELSE 'Up.gif' 
       END         AS 'Service Status', 
       CASE 
         WHEN n.bca_pcs = 'Field Services - DV' THEN 'Deer Valley' 
         WHEN n.bca_pcs = 'Field Services -JCL' THEN 'John C. Lincoln' 
         WHEN n.bca_pcs = 'Field Services - MG' THEN 'Medical Group Office' 
         WHEN n.bca_pcs = 'Field Services - NSSC' THEN 'NSSC' 
         WHEN n.bca_pcs = 'Field Services - OSB' THEN 'Osborn' 
         WHEN n.bca_pcs = 'Field Services - SHEA' THEN 'Shea' 
         WHEN n.bca_pcs = 'Field Services - TPK' THEN 'Thompson Peak' 
       END         AS 'Facility' 
FROM   dbo.apm_component c 
       JOIN dbo.apm_componentalertvariable ca 
         ON ca.componentid = c.id 
       JOIN dbo.apm_application a 
         ON a.id = c.applicationid 
       JOIN dbo.nodes n 
         ON n.nodeid = a.nodeid 
       JOIN dbo.apm_alertsdata ad 
         ON ad.nodeid = n.nodeid 
WHERE  n.caption NOT LIKE 'ARCHIVE-%' 
       AND n.bca_app_owner = 'EMR Ambulatory' 
       AND n.statusled != 'Unmanaged.gif' 
ORDER  BY ( CASE 
              WHEN n.status = 'Down' THEN 1 
              WHEN ad.componentstatus = 'Down' THEN 2 
              WHEN ad.componentstatus = 'Critical' THEN 3 
              WHEN ad.componentstatus = 'Warning' THEN 4 
              WHEN ad.componentstatus = 'Unreachable' THEN 5 
              WHEN ad.componentstatus = 'Unknown' THEN 6 
              WHEN ad.componentstatus = 'Up' THEN 7 
            END ) ASC; 

0 Kudos
1 Reply
Level 11

Not sure if my original post is clear enough.  When I run the query, I get two separate lines as the picture shows below.  I only want one row that contains the node status, and two component status. Does anyone have a recommendation?

s-bolyard_0-1600208182826.png

 

0 Kudos