[英]SELECT DISTINCT SELECT other columns
我有一個查詢,可獲取有關數據庫的系統數據
$data = Query "SELECT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
from table"
$data | Export-Csv -Path $Path\data.csv -NoTypeInformation
最近,我注意到導出的數據中有sessionID的重復條目。 是否可以選擇僅按會話ID區分?
就像是
Query "SELECT [server_name]
,SELECT DISTINCT[sessionID]
,SELECT [user]
,[ElapsedTime]
from table"
例如,如果表具有:
導出的csv僅應包含:
評論太多了。
此查詢將過濾所有值均相同的所有行:
$data = Query "SELECT DISTINCT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
from table"
$data | Export-Csv -Path $Path\data.csv -NoTypeInformation
如果任何列的值不同,您將獲得兩個(或更多)記錄。
編輯 :
另一方面,如果您只希望每個sessionID
一個記錄,則此查詢將僅返回該記錄。 ORDER BY
的ROW_NUMBER()
需要一個內部ORDER BY
子句,但這聽起來好像您並不在乎它的排序方式,因此從本質上講,這是一種隨機排序,可減少到一行。
$data = Query "SELECT TOP (1) WITH TIES [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
from table
ORDER BY ROW_NUMBER() OVER (PARTITION BY sessionID ORDER BY update_time DESC) "
$data | Export-Csv -Path $Path\data.csv -NoTypeInformation
第二編輯 :將update_time
添加到排序條件。
您可以使用類似的查詢:
SELECT * FROM (SELECT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
,ROW_NUMBER() OVER(PARITION BY sessionID ORDER BY sessionID) rn
from table) T WHERE rn = 1
要么
WITH CTE_1 AS(SELECT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
,ROW_NUMBER() OVER(PARITION BY sessionID ORDER BY sessionID) rn
from table) SELECT * FROM CTE_1 WHERE rn = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.