私はそれぞれの状態の時間差を計算しようとしていますTSQLは
(1イメージ)以下のようにSQLテーブルを持っているそれぞれの国において時間とともに、中にログインの間の合計時間を計算し、ログアウトします以下のように、エージェントのログインとログアウトの合計時間(図2)。私はリード/ラグ関数を使用しようとしていますが、出力を達成することはできません。あなたはこれを助けてくれますか?
私はそれぞれの状態の時間差を計算しようとしていますTSQLは
(1イメージ)以下のようにSQLテーブルを持っているそれぞれの国において時間とともに、中にログインの間の合計時間を計算し、ログアウトします以下のように、エージェントのログインとログアウトの合計時間(図2)。私はリード/ラグ関数を使用しようとしていますが、出力を達成することはできません。あなたはこれを助けてくれますか?
以下のスニペットは、あなたが行く得るのを助ける必要があります。
;WITH TotalDuration as
(
SELECT LogIN = Min(DateTime)
,LogOut = Max(DateTime)
,AgentID
FROM YourTable
Group BY AgentID
)
SELECT Duration = DATEDIFF(MINUTE, LogIN, LogOut)
,AgentId
FROM TotalDuration
ORDER BY AgentId
--TimeInState = datediff(minute, [DateTime], LEAD([DateTime], 1) OVER (Partition BY AgentID ORDER BY [DateTime]))
私はあなたに総ログを取得し、最小値と最大値を使用して時間をログアウトする方法を知っていると思う...ここにありますLEADとLAGが必要です。
with cte as(
select
agentid,
eventtype,
[DateTime],
datediff(mi,[DateTime],LEAD([DateTime]) over (partition by agentid order by [DateTime])) as [Time_in_state]
from yourTable)
select
agentid,
eventtype,
cast([DateTime] as Date) as TheDate,
sum(Time_in_state) as TotalTime,
from cte
group by
agentid,
eventtype,
cast([DateTime] as Date)
これはなぜ役に立たなかったのか、うまくいかなかったのかについての詳細を誰もが知りたいですか? :) ' – scsimon
画像を投稿することはできません。 **完全なサンプル入力と出力を提供してください。あなたは現在のデータセットに秒を表示していませんが、出力にそのデータセットを表示しています。また、どのバージョンのSQL? LEAD/LAGを指定して2012年を前提としていますが、2012年以降でなければこの機能は利用できず、ウィンドウ機能を使用する必要があります。 – scsimon
私は秒を表示していないExcelに結果をコピーしました。私はSQL 2012を使用しています。 – Rahul
これまで行っていたことを含め、すでに尋ねられているように、写真の代わりに適切な例が含まれています。 –