次のデータを含むテーブルがあります
そして、2つのジョブ(AとCを言う)の間の分数を見つける必要があります。
次のクエリは機能しますが、同じことを実現するためのより簡単な方法があるかどうか疑問に思っています。
DECLARE @StartTime datetime
Declare @EndTime datetime
set @StartTime = (SELECT start_time from table where jobname = 'A' )
set @EndTime = (SELECT end_time from table where jobname = 'C' )
select datediff(minute,@StartTime, @EndTime) numberOfMinutes
目標は、2つのジョブの開始時間と終了時間の差を達成することです。
私はあなたの質問を2つの方法で解釈することができます。1つ目は、ジョブAからジョブCまでの時間差です。これは、Aの終了時間からCの開始時間までです。
select datediff(minute,
max(case when job = 'A' then endtime end),
max(case when job = 'C' then starttime end)
)
from t
where job in ('A', 'C');
あるいは、「ジョブ間の期間の違いは何ですか?」と尋ねているかもしれません。
select sum(case when job = 'A'
then datediff(minute, starttime, endtime)
else -datediff(minute, starttime, endtime)
end)
from t
where job in ('A', 'C');
これらは両方とも、AとCがテーブルに1回だけ表示されることを前提としています。そうでない場合は、新しい質問をして、本当にやりたいことを明確にする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加