问题描述
在SCCM中,我正在创建一个透视报告,该报告将从应用程序列表中带回应用程序版本。只要我知道已安装应用程序的确切名称,使用以下代码对我来说就很好用了:
SELECT netbios_name0 AS 'Computer Name',model0 AS Model,[Google Chrome],[zscaler],[itunes],[Microsoft Office 365 ProPlus - en-us] AS 'Office'
FROM (SELECT rSYS.netbios_name0,CS.model0,arp.displayname0,arp.version0 AS ARPVersion
FROM v_r_system rSYS
JOIN v_gs_computer_system CS
ON CS.resourceid = rsys.resourceid
JOIN v_add_remove_programs arp
ON rsys.resourceid = arp.resourceid
) Temp
PIVOT ( Max(arpversion)
FOR displayname0 IN ([Google Chrome],[Microsoft Office 365 ProPlus - en-us]
) ) Piv
查询结果如下:
ComputerName Model Google Chrome zscaler itunes Office
Computer1 Latitude 5300 2-in-1 86.0.4240.111 2.1.2.105 12.9.2.6 16.0.11328.20368
Computer2 Latitude 7390 86.0.4240.111 2.1.2.105 12.9.2.6 16.0.11328.20492
Computer3 Latitude 7390 2-in-1 86.0.4240.111 1.5.2.501 12.9.2.7 16.0.11328.20492
这正是我希望报表显示的方式,但是,许多应用程序的名称随每个版本而变化,因此我需要能够对应用程序的不同版本进行通配符搜索。我曾尝试在IN语句中使用%通配符,但sql似乎将其视为文字字符,并且不返回任何记录。
因此,我想知道是否有一种方法可以使用上面显示的代码进行通配符搜索,或者有另一种方法可以以类似的格式显示数据。
谢谢!
解决方法
如果您的子查询(Temp
)包含您需要的所有数据,则您应该只可以在报表中使用矩阵控件,而不是表。
数据集查询可以只是子查询,无需进行数据透视等等。
添加按netbios_name0
和model0
分组的行组,然后添加按displayname0
分组的列组,并将矩阵“ cell”的值表达式设置为=MAX(version0)