PowerShell中带SUM的SQL GROUP BY

vatpfxk5  于 2022-12-18  发布在  Shell
关注(0)|答案(2)|浏览(125)

在PowerShell中最简单的编写方法是什么:

SELECT col1, SUM(col3) AS SumOfValues
FROM dbo.Table
GROUP BY col1

如何合并Group-ObjectMeasure-Object
我已经找到了这个答案link,但一定有更简单的方法。

wh6knrhe

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
qc6wkl3g

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

相关问题