SCCM 硬件报告 [如果有多个值(对于所有列)然后将它们组合在一起] 如何?
SCCM Hardware Reports [if there are multiple values (for all columns) then combine them together] How?
我需要为每一列合并多个(行)值。此代码 returns 我需要的所有数据,但是,如果一列中有两个不同的值,它会输出两行。我想通过在一行中输入逗号来显示这一点。我想为每一列都这样做。因为如果一台电脑上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
比如客户端有多个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
希望我的回答对您有所帮助
我需要为每一列合并多个(行)值。此代码 returns 我需要的所有数据,但是,如果一列中有两个不同的值,它会输出两行。我想通过在一行中输入逗号来显示这一点。我想为每一列都这样做。因为如果一台电脑上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
比如客户端有多个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
希望我的回答对您有所帮助