sql - 如何在 SQL 数据透视表中使用通配符
问题描述
在 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],
[Zscaler],
[itunes],
[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
并将矩阵“单元格”的值表达式设置为=MAX(version0)
推荐阅读
- azure - 如何将参数添加到我的 CosmosDB 数据资源管理器工作簿?
- json - 尝试运行 Spring Boot 时出现 JsonParseException
- c++ - 为什么 glm 变换函数“向后”应用?
- google-bigquery - GCSToBigQuery气流python:在两个项目之间移动文件
- mysql - 如何在 MySQL 中触发计算 time_in 和 time_out 之间的时间差?
- flutter - 在颤振中搜索 SearchableDropdown 中的内容时如何显示建议?
- r - 如何使用 selectInput 拆分列
- powershell - 将 IP 状态从 Unused 更新为 Used Infoblox API
- c# - 放大后如何保持平移状态,平移再缩放图像
- javascript - 如何从表 onclick 中获取当前 td 值?