![](/img/trans.png)
[英]Get the latest row of a table based on Latest Date and a distinct column in SQL Server 2008 R2
[英]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-Object
按Id
對行進行分組,然后使用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.