0
私はアクティビティレポートを作成しようとしているSQLの初心者です。ログインとログアウトの日付/時刻を記録するテーブルにプロシージャとトリガを格納しています。SQL時刻パラメータの計算
時間を計算する方法についていくつかのアドバイスは、最初の日あたりのログアウト最後にログインしますから働いた後、私は?
ご指導いただきありがとうございます。
私はアクティビティレポートを作成しようとしているSQLの初心者です。ログインとログアウトの日付/時刻を記録するテーブルにプロシージャとトリガを格納しています。SQL時刻パラメータの計算
時間を計算する方法についていくつかのアドバイスは、最初の日あたりのログアウト最後にログインしますから働いた後、私は?
ご指導いただきありがとうございます。
SELECT A.*,
DATEDIFF(second,B.firstloginonthatday,B.lastlogoutonthatday) AS time_elapsed
FROM YourTable A
INNER JOIN
( SELECT Z.USERID,
CONVERT(DATE,Z.DATE_TIME) AS ONLYDATE,
MIN(Z.DATE_TIME) AS firstloginonthatday,
MAX(Z.DATE_TIME) AS lastlogoutonthatday
FROM
(
SELECT *,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'logout' THEN DATE_TIME
ELSE NULL END
) AS lastlogout_rn,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'login' THEN DATE_TIME
ELSE NULL END
) AS firstlogin_rn
FROM Yourtable
) Z
WHERE Z.lastlogout_rn = 1 OR Z.firstlogin_rn = 1
GROUP BY Z.USERID,CONVERT(DATE,Z.DATE_TIME)
) B
ON A.USERID = B.USERID
AND CONVERT(DATE,A.DATE_TIME) = B.ONLYDATE;
こんにちは、コードをありがとう、それは大歓迎です。何らかの理由で、20170418の時間計算が正しくないため、20170419のために複数のログインとログアウトが原因である可能性があると想定していますか? –
あなたが私たちに教えてください、あなたが使用しているSQLデータベース、あなたの現在のコードを共有し、あなたがこれまでに試したことを説明できるなら、素晴らしいコミュニティです。 –
私はSQL 2008 R2を使用しています –
[複数の行の時間差を計算するための[T-SQLスクリプト]の可能な重複](http://stackoverflow.com/questions/24518781/t-sql-script-to-calculate-time-difference -between-multiple-rows) –