我有下表:
SessionID | UserName | Started | Ended
----------------------------------------------------------------
100 Test1 2015-07-26 00:03:05 2015-07-26 00:08:12
正如标题所说,我需要在给定参数@FromDate
和@ToDate
参数之间提取每分钟有多少活动会话。到目前为止,我所尝试的并没有选择非活动会话(当时没有客户在线),我无法弄清楚如何做到这一点。
我的 SQL 语句
CREATE PROCEDURE [dbo].[ActiveSessionsByMinute] @FromDate datetime, @ToDate datetime
AS
BEGIN
SET NOCOUNT ON
SELECT DATEADD(MINUTE, DATEPART(MINUTE, Started), CAST(CONVERT(varchar(20), Started, 112) AS datetime)) AS DateMinute,
COUNT(SessionID) AS ActiveSessions
FROM ApplicationSessionHistory
GROUP BY DATEADD(MINUTE, DATEPART(MINUTE, Started), CAST(CONVERT(varchar(20), Started, 112) AS datetime))
END
GO
输出
DateMinute | ActiveSessions
-----------------------------------------
2015-07-26 00:03:00.000 | 1
如果我执行以下语句,我应该得到所需的输出(如下):
EXEC dbo.ActiveSessionsByMinute
@FromDate = '2015-07-26 00:00',
@ToDate = '2015-07-26 00:10'
期望的输出
DateMinute | ActiveSessions
-----------------------------------------
2015-07-26 00:00:00.000 | 0
2015-07-26 00:01:00.000 | 0
2015-07-26 00:02:00.000 | 0
2015-07-26 00:03:00.000 | 1
2015-07-26 00:04:00.000 | 1
2015-07-26 00:05:00.000 | 1
2015-07-26 00:06:00.000 | 1
2015-07-26 00:07:00.000 | 1
2015-07-26 00:08:00.000 | 1
2015-07-26 00:09:00.000 | 0
2015-07-26 00:00:00.000 | 0
有人可以给我小费吗?谢谢