我尝试为Chrome创建合规性报告,列出了收藏集,安装了Chrome的设备数量(所有版本)以及使用最新版本Chrome的设备数量'我试图指定合规性。获得这两个号码后,我将在报告构建器中创建一个包含一定百分比Chrome合规性的列。我可以通过下面的QUERY获得带有Chrome的整机数量(无论版本)的收藏
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 :(得分:0)
使用case语句和Sum来计算带有版本号的条目。
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
;