表dbo.AllApps
記錄所有已運行的可執行文件,它具有存儲exe文件哈希值的列ApplicationHash
,存儲執行exe的用戶ID的列UserName
。SQL Server:將結果返回一行並附加COUNT列
如果exe已經運行了10次,表中將會有10個條目具有相同的信息,但具有不同的時間戳和執行該實例的用戶。
我想生成一個只返回10行(包括所有列時間,名稱,desc ...)的報告,另外還有一列將提供exe的次數被執行(在這個例子中總共10行)和執行exe的唯一用戶數量(在這個例子中是3)。
有什麼建議嗎?
ApplicationHash TimeStamp UserName
-----------------------------------
ABCDE12345 00:00:05 User1
ABCDE12345 00:02:05 User2
ABCDE12345 00:04:05 User1
ABCDE12345 00:10:05 User3
ABCDE12345 00:15:05 User3
ABCDE12345 00:20:05 User1
ABCDE12345 00:21:05 User2
ABCDE12345 00:33:05 User2
ABCDE12345 00:45:05 User1
ABCDE12345 00:55:05 User1
結果應該是somethine這樣的:
ApplicationHash ProcessCount UserCount
--------------------------------------
ABCDE12345 10 3
這裏是有人想出了這確實解決了ProcessCount
問題,但我需要一個唯一的用戶名數,以及:
declare @StartDate datetime = '20170401';
declare @EndDate datetime = '20170406';
select top 1 with ties
ProcessCount = count(*) over (partition by ApplicationHash)
, ApplicationHash
, ProcessStartTime
, ApplicationType
, Description
, Publisher
, ProductName
, ProductVersion
, EventDescription
, CommandLine
, FileName
from dbo.AllApps aa
where TokenType = 'Elevated'
and ApplicationType != 'com Class'
and ApplicationType != 'ActiveX Control'
and ProcessStartTime >= @StartDate
and ProcessStartTime < @Enddate
and ProductName = 'WizSvcUt Application'
order by row_number() over (partition by ApplicationHash order by ProcessStartTime desc)
請縮短本文。 – niksofteng