簡體   English   中英

根據列 sql powershell 獲取最新的重復項

[英]Get latest duplicates based on a column sql powershell

我有一個從 sql 查詢中檢索出來的表,如下所示

   Id   Date-Time            FilesA    FilesB

   556  2020-10-13 21:12:04  temp1.txt fels.csv
   133  2020-09-08 03:22:16  NA        temp2.txt
   556  2020-10-13 22:02:44  temp1.txt fels.csv
   203  2021-08-03 03:22:16  macs.xml  temp2.txt

我正在拉出 FilesA 和 FilesB 列並對 Id 列的所有 Id 進行一些操作。 但是 Id 列中有一些重復項,我只需要根據 Date-Time 列對最新的 Id 執行操作,例如 556 我需要處理第 3 行的 FilesA 和 FilesB,因為它是最新生成的,即, 22:02。 我可以有多個這樣的不同 ID 的重復項。 如何使用 powershell 腳本實現這一目標? 我發現識別重復項的所有內容都是使用 csv ,這在這里似乎沒有幫助,因為我不需要 csv 並且對於時間日期列,是否有類似將檢索到的列數據轉換為日期時間對象然后進行比較的內容? 我迷路了。

$SqlAdapter.SelectCommand = $SqlCmd
$Dataset = New-Object System.Data.Dataset
$SqlAdapter.Fill($Dataset)
$DataSet.Tables[0]
$data1=$DataSet.Tables[0]
$data1.FilesA #some operations
#need to perfrom the actions on all ids and for duplicates only on the latest ones

使用Group-ObjectId對行進行分組,然后使用Sort-Object -Descending |Select -First從每個組中選擇具有最新日期的行:

$newestRowPerId = $data1 |Group-Object Id |ForEach-Object { 
    $_.Group |Sort-Object -Property 'Date-Time' -Descending |Select -First 1 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM