将行与重复值组合,SUM非重复值

时间:2017-11-07 17:17:46

标签: powershell

我有一组设备数据,具有不同的计数。设备名称和类型将始终与彼此重复,但计数会有所不同。从多个SQL查询中提取数据,然后将其放入PSObject

结果数据如下所示:

enter image description here

我需要的是对各个计数列进行求和,对于上面的示例,给出以下输出:

enter image description here

执行Sort-Object -Property Name -Unique之类的操作无法对计数行求和,并删除unique参数,我无法弄清楚如何处理Group-Object我认为我需要分开行并对它们求和。结果组只是相同数据的一大部分,因为设备有超过20个计数(Count1,Count2 ...... Count19,Count20 ......)

任何帮助指出我在这里的正确轨道将不胜感激。

1 个答案:

答案 0 :(得分:1)

$SQL = ConvertFrom-CSV @"
Name,Type,Count1,Count2,Count3
Device1,Type1,0,12,0
Device1,Type1,0,5,0
Device1,Type1,1,0,0
Device1,Type1,0,0,3
Device2,Type2,5,0,0
Device2,Type2,1,0,0
Device3,Type2,0,5,0
Device3,Type2,0,1,1
Device3,Type2,1,1,2
"@


$SQL | Group-Object Name | ForEach {
    New-Object PSObject -Property @{
        Name = $_.Name
        Type = $_.Group[0].Type
        Count1 = ($_.Group | Measure-Object -Property Count1 -Sum).Sum
        Count2 = ($_.Group | Measure-Object -Property Count2 -Sum).Sum
        Count3 = ($_.Group | Measure-Object -Property Count3 -Sum).Sum
    }
} | Format-Table