在PowerShell中最简单的编写方法是什么:
SELECT col1, SUM(col3) AS SumOfValues FROM dbo.Table GROUP BY col1
如何合并Group-Object和Measure-Object?我已经找到了这个答案link,但一定有更简单的方法。
Group-Object
Measure-Object
wh6knrhe1#
像这样?在最后加上一个计算过的属性。
'id,amount 1,4 1,5 2,4 2,6 3,3 3,5' | convertfrom-csv | group id | select name, @{n='Sum';e={$_.group.amount | measure -sum | % sum}} Name Sum ---- --- 1 9 2 10 3 8
qc6wkl3g2#
您需要使用属性GROUP。脚本输出“$group|格式表”,它显示了真实的的问题是什么。以下是组中每一行的外观:
Count Name Group ----- ---- ----- 3 a {@{col1=a; col2=x; col3=1}, @{col1=a; col2=x; col3=2}, @{col1=a; col2=x; col3=3}}
参见以下代码:
$input = @" col1,col2,col3 a,x,1 a,x,2 a,x,3 b,x,4 b,x,5 b,x,6 c,x,7 c,x,8 c,x,9 "@ $table = $input | ConvertFrom-Csv $table | Format-Table $groups = $table | Group-Object {$_.col1} $outputTable = [System.Collections.ArrayList]::new() foreach($group in $groups) { $group | Format-Table $newRow = New-Object -TypeName psobject $newRow | Add-Member -NotePropertyName col1 -NotePropertyValue $group.Name $sum = 0 $group.Group | foreach{$sum += $_.col3} Write-Host "sum = " $sum $newRow | Add-Member -NotePropertyName SumOfValues -NotePropertyValue $sum $outputTable.Add($newRow) | Out-Null } $outputTable | Format-Table
2条答案
按热度按时间wh6knrhe1#
像这样?在最后加上一个计算过的属性。
qc6wkl3g2#
您需要使用属性GROUP。脚本输出“$group|格式表”,它显示了真实的的问题是什么。
以下是组中每一行的外观:
参见以下代码: