我正在尝试使用SSRS从我的SCCM SQL数据库创建报告。我在SSRS中运行的SQL查询如下所示:
SELECT
SYS.Netbios_Name0,
SYS.User_Name0,
OPSYS.Caption0 as Caption,
OPSYS.Version0,
CSYS.Model0,
Netcard.Description0,
Netcard.MACAddress0,
Netcard.Manufacturer0,
BIOS.SerialNumber0 as 'BiosSerial0',
WD.SerialNumber0 as 'WDSerial0',
ENC.SMBIOSAssetTag0,
WD.LastUpdate0,
CONVERT(VARCHAR(11), wd.WarrantyStartDate0, 106) as WarrantyStartDate0,
CONVERT(VARCHAR(11), wd.WarrantyEndDate0, 106) as WarrantyEndDate0
FROM
fn_rbac_R_System(@UserSIDs) SYS
LEFT JOIN fn_rbac_GS_X86_PC_MEMORY(@UserSIDs) MEM on SYS.ResourceID = MEM.ResourceID
LEFT JOIN fn_rbac_GS_COMPUTER_SYSTEM(@UserSIDs) CSYS on SYS.ResourceID = CSYS.ResourceID
LEFT JOIN fn_rbac_GS_PROCESSOR(@UserSIDs) Processor on Processor.ResourceID = SYS.ResourceID
LEFT JOIN fn_rbac_GS_OPERATING_SYSTEM(@UserSIDs) OPSYS on SYS.ResourceID=OPSYS.ResourceID
LEFT JOIN fn_rbac_GS_PC_BIOS(@UserSIDs) BIOS on SYS.ResourceID=BIOS.ResourceID
LEFT JOIN fn_rbac_GS_SYSTEM_ENCLOSURE(@UserSIDs) ENC on SYS.ResourceID=ENC.ResourceID
LEFT JOIN fn_rbac_GS_NETWORK_ADAPTER(@UserSIDs) Netcard ON SYS.ResourceID = Netcard.ResourceID
INNER JOIN fn_rbac_GS_WESLEYANDEVICE(@UserSIDs) WD on SYS.ResourceID=WD.ResourceID
WHERE (Netcard.Description0 LIKE '%I219-V%') OR (Netcard.Description0 LIKE '%Wireless-AC 8265%') AND (Netcard.MACAddress0 IS NOT NULL)
ORDER BY WD.WarrantyEndDate0 ASC
此查询返回我想要的结果,但它会为Netcard字段中的每个结果创建一个新行,包括一些重复信息。例如,我有一台具有多个网络接口的计算机(受上面的WHERE语句限制)。我要搜索的两个网络适配器将返回但在各行上:
我希望每台计算机只有一行,Netcard字段返回的数据将位于同一行的新列中。我不确定如何继续,因为我不熟悉SQL或DBA。我假设这将是一个支点,但我不知道该怎么做(特别是键控)。这是我希望实现的一个例子:
感谢您帮助我找到最佳方法。
答案 0 :(得分:0)
使用此数据集结果,您可以在ssrs报告中管理数据透视表,即您可以在ssrs报告工具中创建数据透视。
创建新的.RDL文件并创建新数据集以访问要显示的报告上的数据。
像你使用的表" Matrix"控制RDL并将数据集绑定到Matrix控件,并在列组中添加要显示为pivot的列名 并检查报告