简体   繁体   English

SCCM硬件报告[如果有多个值(对于所有列),则将它们组合在一起)如何?

[英]SCCM Hardware Reports [if there are multiple values (for all columns) then combine them together] How?

I need to combine multiple (rows) values for each column. 我需要为每列组合多个(行)值。 This code returns all the data I need but, if there are two different values in a column, it outputs two lines. 这段代码返回我需要的所有数据,但是,如果一列中有两个不同的值,它将输出两行。 I want to show this by entering a comma between them on a single line. 我想通过在它们之间的一行中输入逗号来显示这一点。 I want to do this for every column. 我想对每一列都这样做。 Because if there are 2 different values in 2 columns on a computer, 4 lines are displayed for one computer. 因为如果一台计算机的2列中有2个不同的值,则一台计算机将显示4行。

SELECT DISTINCT
    NA.DNSHostName0 as 'Computer Name',
    CS.domain0 as 'Domain', 
    NA.MACAddress0 as 'MAC Address',
    NA.IPAddress0 as 'IP Address',
    CS.UserName0 as 'User',
    SE.SerialNumber0 as 'System Enclosure serial', 
    CS.Manufacturer0 as 'Manufacturer', 
    CS.Model0 as 'Model', 
    OS.Caption0 as 'OS', 
    RAA.SMS_Assigned_Sites0 as 'Site', 
    v_GS_DESKTOP_MONITOR.Name0 as 'Monitor',
    v_GS_VIDEO_CONTROLLER.Name0 as 'Video Card',
    v_GS_VIDEO_CONTROLLER.AdapterRAM0 as 'Video Memory Hafızası',
    RAM.TotalPhysicalMemory0 as 'Total Memory', 
    SUM(ISNULL(LDisk.Size0,'0')) as 'Hardrive Size', 
    SUM(ISNULL(LDisk.FreeSpace0,'0')) AS 'Free Space', 
    CPU.MaxClockSpeed0 as 'Max CPU Speed', 
    CPU.Name0 as 'CPU Model'
FROM
    v_GS_COMPUTER_SYSTEM CS 
RIGHT JOIN
    v_GS_PC_BIOS BIOS ON BIOS.ResourceID = CS.ResourceID
RIGHT JOIN
    v_GS_SYSTEM SYS ON SYS.ResourceID = CS.ResourceID
LEFT JOIN
    v_R_User USR ON USR.Unique_User_Name0 = CS.UserName0
RIGHT JOIN
    v_GS_OPERATING_SYSTEM OS ON OS.ResourceID = CS.ResourceID  
RIGHT JOIN
    v_RA_System_SMSAssignedSites RAA ON RAA.ResourceID = CS.ResourceID 
RIGHT JOIN
    V_GS_X86_PC_MEMORY RAM ON RAM.ResourceID = CS.ResourceID 
RIGHT JOIN
    v_GS_Logical_Disk LDisk ON LDisk.ResourceID = CS.ResourceID 
RIGHT JOIN
    v_GS_Processor CPU ON CPU.ResourceID = CS.ResourceID    
FULL JOIN 
    v_GS_SYSTEM_ENCLOSURE SE ON SE.ResourceID = CS.ResourceID
LEFT JOIN
    v_GS_NETWORK_ADAPTER_CONFIGUR NA ON NA.ResourceID = CS.ResourceID
LEFT JOIN
    v_GS_DESKTOP_MONITOR ON v_GS_DESKTOP_MONITOR.ResourceID = CS.ResourceID
LEFT JOIN
    v_GS_VIDEO_CONTROLLER ON v_GS_VIDEO_CONTROLLER.ResourceID = CS.ResourceID
WHERE
    LDisk.DriveType0 = 3 AND NA.DNSHostName0  <> 'Null'
GROUP BY 
    NA.DNSHostName0, CS.domain0,  CS.Username0,
    SE.SerialNumber0,  CS.Manufacturer0,  CS.Model0, 
    OS.Caption0, RAA.SMS_Assigned_Sites0, 
    RAM.TotalPhysicalMemory0, 
    CPU.MaxClockSpeed0, CPU.Name0, 
    NA.MACAddress0, NA.IPAddress0,
    v_GS_DESKTOP_MONITOR.Name0,
    v_GS_VIDEO_CONTROLLER.Name0,
    v_GS_VIDEO_CONTROLLER.AdapterRAM0
ORDER BY 
    NA.DNSHostName0

For example, the clients have multiple MAC addresses and IP addresses, then we could use the following query to achieve your requirement. 例如,客户端有多个MAC地址和IP地址,那么我们可以使用以下查询来满足您的要求。

SELECT  distinct 
NA2.DNSHostName0 as 'Computer Name',
CS.domain0 as 'Domain', 
Macs = Stuff ((select ', ' + NA1.MACAddress0 from v_GS_NETWORK_ADAPTER_CONFIGUR as 
NA1 where NA1.ResourceID = NA2.ResourceID FOR XML PATH ('')) , 1, 1, ''),
IPs = Stuff ((select ', ' + NA1.IPAddress0 from v_GS_NETWORK_ADAPTER_CONFIGUR as NA1 
where NA1.ResourceID = NA2.ResourceID FOR XML PATH ('')) , 1, 1, ''),
CS.UserName0 as 'User',
SE.SerialNumber0 as 'System Enclosure serial', 
CS.Manufacturer0 as 'Manufacturer', 
CS.Model0 as 'model', 
OS.Caption0 as 'OS', 
RAA.SMS_Assigned_Sites0 as 'Site', 
v_GS_DESKTOP_MONITOR.Name0 as 'Monitor',
v_GS_VIDEO_CONTROLLER.Name0 as 'VGA Card',
v_GS_VIDEO_CONTROLLER.AdapterRAM0/1024 as 'VGA Memory',
RAM.TotalPhysicalMemory0/1024 as 'Total Memory', 
sum(isnull(LDisk.Size0,'0'))/1024 as 'Hardrive Size', 
sum(isnull(LDisk.FreeSpace0,'0'))/1024 AS 'Free Space', 
CPU.Name0 as 'CPU Model',
v_GS_DISK.Name0 as 'Disk Name',
v_GS_DISK.Model0 as 'Disk Model',
v_GS_DISK.Size0 as 'Disk Size',
v_GS_CDROM.MediaType0 as 'CD Media Type',
v_GS_CDROM.Name0 as 'CDRom Name'

from  
v_GS_COMPUTER_SYSTEM CS right join v_GS_PC_BIOS BIOS on BIOS.ResourceID = 
CS.ResourceID
right join v_GS_SYSTEM SYS on SYS.ResourceID = CS.ResourceID
left join v_R_User USR on USR.Unique_User_Name0 = CS.UserName0
right join v_GS_OPERATING_SYSTEM OS on OS.ResourceID = CS.ResourceID  
right join v_RA_System_SMSAssignedSites RAA on RAA.ResourceID = CS.ResourceID 
right join V_GS_X86_PC_MEMORY RAM on RAM.ResourceID = CS.ResourceID 
right join v_GS_Logical_Disk LDisk on LDisk.ResourceID = CS.ResourceID 
right join v_GS_Processor CPU on CPU.ResourceID = CS.ResourceID    
full join v_GS_SYSTEM_ENCLOSURE SE on SE.ResourceID = CS.ResourceID
left join v_GS_NETWORK_ADAPTER_CONFIGUR NA2 on NA2.ResourceID = CS.ResourceID
left join v_GS_DESKTOP_MONITOR on v_GS_DESKTOP_MONITOR.ResourceID = CS.ResourceID
left join v_GS_VIDEO_CONTROLLER on v_GS_VIDEO_CONTROLLER.ResourceID = CS.ResourceID
left join v_GS_DISK on v_GS_DISK.ResourceID = CS.ResourceID
left join v_GS_CDROM on v_GS_CDROM.ResourceID = CS.ResourceID

where NA2.DNSHostName0 = @variable


group by 
NA2.DNSHostName0,
CS.domain0, 
CS.Username0,
SE.SerialNumber0, 
CS.Manufacturer0, 
CS.Model0, 
OS.Caption0, 
RAA.SMS_Assigned_Sites0, 
RAM.TotalPhysicalMemory0,  
CPU.Name0, 
NA2.MACAddress0,
NA2.ResourceID,
v_GS_DESKTOP_MONITOR.Name0,
v_GS_VIDEO_CONTROLLER.Name0,
v_GS_VIDEO_CONTROLLER.AdapterRAM0,
v_GS_DISK.Name0,
v_GS_DISK.Model0,
v_GS_DISK.Size0,
v_GS_CDROM.MediaType0,
v_GS_CDROM.Name0



ORDER BY NA2.DNSHostName0

Hope my answer could help you. 希望我的回答能对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM