我有一个数组,像这样:
$array = @()
$Props = [ordered]@{Table="Table1"; Col1=1; Col2=2}
$array += New-Object psobject -Property $Props
$Props = [ordered]@{Table="Table2"; Col1=4; Col2=5}
$array += New-Object psobject -Property $Props
$Props = [ordered]@{Table="Table1"; Col1=3; Col2=7}
$array += New-Object psobject -Property $Props
$Props = [ordered]@{Table="Table2"; Col1=2; Col2=6}
$array += New-Object psobject -Property $Props
我想要得到的总和Col1
,并Col2
通过表
Table Col1 Col2
----- ----- -----
Table1 4 9
Table2 6 11
在SQL中,这将是:
SELECT Table, Col1 = SUM(Col1), Col2 = SUM(Col2)
FROM <$array>
GROUP BY Table
但我无法弄清楚如何在PoSh中做到这一点。当然这应该是相对简单的?
谢谢!
发布于 2019-07-10 17:47:43
翻转SQL语句,你基本上知道在PowerShell中做什么 - 按表名分组,然后选择每个语句的总和!
# Group the objects by table name
$Tables = $array |Group Table |Select-Object -Expand Group
# Select the table name + sum of each group
$Tables |Select-Object Name,@{Name='Sum1';Expression={($_ |Measure-Object Col1 -Sum).Sum}},@{Name='Sum2';Expression={($_ |Measure-Object Col2 -Sum).Sum}}
最后两个参数Select-Object
是计算表达式:
@{
# Select a new property named "Sum1"
Name = 'Sum1'
Expression = {
# Calculate the value from the sum of the Col1 properties in this table
($_ |Measure-Object Col1 -Sum).Sum
}
}
https://stackoverflow.com/questions/-100009105
复制相似问题