2017-11-06 18 views
1

SQLビューで助けてもらえますか?時間間隔でのカウント値

私は、以下のようにユーザIDとリターンのデータと、ログイン/ログアウト時間を記録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, 
) 

と呼ばれるテーブルを持っています。

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 

ありがとうございます。

+2

これは素晴らしいようです。あなたを止めるのは何ですか? –

+1

サンプルデータと試した疑いのあるクエリについて、期待される結果をお知らせください。 – TheGameiswar

+0

お詫び申し上げます。 IDの「時間」と「期間」のリストは、selectテーブルのステートメントに表示されます。 要約カウントは私が達成したいものです。 – ScottyM

答えて

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 

、構文が素早く入力するとオフかもしれないが、うまくいけばあなたのアイデアを得ますか?

+0

ケースステートメントの最後に少しだけ構文の修正が必要です。ありがとうございますMilney – ScottyM