我正在制作一张桌子,我需要使用以下值计算行程之间的平均时间.
Date Clockin CLockout Trip1 Trip2
==== ======= ======== ===== ======
01/01/2013 13:00 17:00 3 3
我试过这个.
(datediff(minute,[Clockin],[ClockOut])/case when [Trip1]=(0) then NULL else [Trip1] end+case when [Trip2]=(0) then NULL else [Trip2] end)
和
(datediff(minute,[Clockin],[ClockOut])/case when [Trip1]=(0) then 1 else [Trip1] end+case when [Trip2]=(0) then 1 else [Trip2] end)
目标是计算出行之间的持续时间.即如果trip2为空则为4小时/ 3次旅行,否则为4小时/ 3 3次(4小时/ 6次旅行)
但上述似乎并没有产生正确的结果.
任何帮助将不胜感激.
最佳答案 根据您希望如何处理行程总和为0(是否为空结果?),以下计算之一应该有效:
declare @t table ([Date] date, Clockin time, CLockout time, Trip1 int, Trip2 int)
insert into @t
select '01/01/2013', '13:00', '17:00', 3, 3 union all
select '01/01/2013', '13:00', '17:00', 0, 3 union all
select '01/01/2013', '13:00', '17:00', 0, 0 union all
select '01/01/2013', '13:00', '17:00', 3, null;
select [minutes]=datediff(mi, Clockin, Clockout),
[trips] = ((isnull(Trip1, 0)+isnull(Trip2,0))),
[calc] = datediff(mi, Clockin, Clockout)/ (nullif((isnull(Trip1, 0)+isnull(Trip2,0)), 0)),
[calc2] = datediff(mi, Clockin, Clockout)/ isnull((nullif((isnull(Trip1, 0)+isnull(Trip2,0)), 0)), 1)
from @t