请有人协助SQL视图。
我有一个名为LoginActivity的表
CREATE TABLE [dbo].[LoginActivity](
[LoAc_ActivityID] [int] IDENTITY(1,1) NOT NULL,
[LoAc_UserID] [int] NULL,
[LoAc_Login] [datetime] NULL,
[LoAc_logout] [datetime] NULL,
[LoAc_Duration] [numeric](24, 6) NULL,
)
使用用户ID记录登录/注销时间并返回如下数据。
779 1 2017-11-03 08:07:41.000 2017-11-03 08:09:14.000 1.000000
780 1 2017-11-04 08:09:19.000 2017-11-04 08:27:19.000 17.000000
781 2 2017-11-04 08:27:22.000 2017-11-04 08:35:11.000 7.000000
782 3 2017-11-04 08:35:18.000 2017-11-04 08:58:12.000 19.000000
783 4 2017-11-04 08:35:22.000 2017-11-04 08:58:12.000 19.000000
我需要创建一个视图来计算LoAc_Login在过去1小时,2小时,3小时和最后4小时内的用户数。我想提供如下数据。
WithinHour 1HourAgo 2HoursAgo 3HoursAgo 4HoursAgo
2 3 5 0 2
感谢。
答案 0 :(得分:0)
喜欢的东西;
SELECT
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 0 AND DATEDIFF(H,getdate(),LoAc_Login) < 1 THEN 1 ELSE 0 END AS WithinHour,
sum(CASE WHEN DATEDIFF(H,getdate(),LoAc_Login) >= 1 AND DATEDIFF(H,getdate(),LoAc_Login) < 2 THEN 1 ELSE 0 END AS OneHourAgo,
etc.
FROM LoginActivity
未经测试,语法可能会因快速输入而关闭,但希望您明白这一点?