2017-09-13 43 views
0

我正在嘗試爲Chrome創建合規性報告,並在其中列出收集,安裝了Chrome的設備數量(所有版本)以及最新的設備數量Chrome的版本我正在試圖指定合規性。獲得這兩個數字後,我將在報告構建器中創建一個Chrome合規性百分比列。我能得到收集與道達爾器的計數與Chrome瀏覽器(版本Reguardless)與下面的查詢使用Report Builder 3.0的Chrome的SCCM合規性報告

select c.Name, 
Count(s.Name0) AS Installed 
from V_R_System s 
inner join v_GS_SoftwareFile vgs on vgs.ResourceId = s.ResourceId 
join v_FullCollectionMembership fcm on fcm.ResourceID = s.ResourceID 
join v_Collection c on c.CollectionID = fcm.CollectionID 
where vgs.FileName = 'Chrome.exe' AND c.Name like 
'%MyCollectionNamingScheme%' 
Group By c.Name 

下一步我需要的是用機器的數量,以獲得數與Chrome的版本59.我知道我可以編輯頂部查詢並獲得它,但是我需要將第一個數字作爲變量嗎?我是SQL新手,我還在學習。我想在報表生成器中單獨進行查詢,但我不知道這是否能通過從使用相同集合的兩個獨立表中獲取數據來給出準確答案。我知道我可以通過QUERY BELOW來獲取號碼。我只是想知道在單個查詢中獲得此信息的最佳方式是,還是應該將它們分開並在報表生成器中以某種方式組合它們。

select c.Name, 
Count(s.Name0) AS Installed 
from V_R_System s 
inner join v_GS_SoftwareFile vgs on vgs.ResourceId = s.ResourceId 
join v_FullCollectionMembership fcm on fcm.ResourceID = s.ResourceID 
join v_Collection c on c.CollectionID = fcm.CollectionID 
where vgs.FileName = 'Chrome.exe' AND vgs.FileVersion0 like '59%' AND c.Name 
like '%MyCollectionNamingScheme%' 
Group By c.Name 

回答

0

使用與Sum相結合的case語句對帶有版本號的條目進行計數。

SELECT  c.Name, 
      COUNT(s.Name0) AS Installed, 
      SUM(CASE 
        WHEN vgs.FileVersion0 LIKE (@FileVersion + '%') 
        THEN 1 
        ELSE 0 
       END 
       ) AS CountCompliant 
    FROM  V_R_System AS s 
    INNER JOIN v_GS_SoftwareFile AS vgs 
    ON vgs.ResourceId = s.ResourceId 
    JOIN  v_FullCollectionMembership AS fcm 
    ON fcm.ResourceID = s.ResourceID 
    JOIN  v_Collection AS c 
    ON c.CollectionID = fcm.CollectionID 
    WHERE  vgs.FileName = 'Chrome.exe' 
      AND c.Name LIKE '%MyCollectionNamingScheme%' 
    GROUP BY c.Name 
; 
+0

非常感謝!我試圖將它過度複雜化。我最終在SCCM的默認報告中看到了SUM(Case)聲明,所以在幫助我更好地理解它的過程中找到了最佳解決方案。再次......謝謝! – Sanwil9