我有一个查询,用于获取有关数据库的系统数据
$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仅应包含:
答案 0 :(得分:3)
评论太多了。
此查询将过滤出 all 值相同的所有行:
$data = Query "SELECT DISTINCT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
from table"
$data | Export-Csv -Path $Path\data.csv -NoTypeInformation
如果 any 列的值不同,您将获得两个(或更多)记录。
编辑:
另一方面,如果您只希望每个sessionID
有一条记录,则此查询将仅返回该记录。 ROW_NUMBER()
中的ORDER BY
需要一个内部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
添加到排序条件。
答案 1 :(得分:3)
您可以使用类似的查询:
ArrayList<String[]> songsArray = new ArrayList<String[]>();
Scanner scan = new Scanner(new File("test.csv"));
while (scan.hasNextLine()) {
String line = scan.nextLine();
String[] lineArray = line.split(",");
songsArray.add(lineArray);
}
OR
SELECT * FROM (SELECT [server_name]
,[sessionID]
,[user]
,[ElapsedTime]
,ROW_NUMBER() OVER(PARITION BY sessionID ORDER BY sessionID) rn
from table) T WHERE rn = 1