gpt4 book ai didi

sql - 计算列规范中的除法、求和值

转载 作者:行者123 更新时间:2023-12-02 14:21:53 25 4
gpt4 key购买 nike

我正在制作一个表格,需要使用以下值计算行程之间的平均时间。

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

关于sql - 计算列规范中的除法、求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14767863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com