首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在POWER BI中减去不同行的日期

如何在POWER BI中减去不同行的日期
EN

Stack Overflow用户
提问于 2018-11-04 23:25:30
回答 1查看 1.7K关注 0票数 2

我有张桌子看起来像这样:

忍受我吧,这会让我有点困惑;

我希望得到所需列中的值。计算是:StartTime-(上一行)结束时。所以第2行(开始时间)减去第1行结束时间是17:04:48 - 17:04:31 (=17秒)。但是,在进行日期减去计算之前,我希望排除CustAgentFl =0和Transfer频标= 0的行。另外,如果Starttime是<0,那么只有0。

行都按相同的NID分组,因此DAX查询当然需要按NID分组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 08:33:15

如果可以使用数据库为您计算这些值,则可以使用迟滞窗口函数从上一行中获取值。但是,在数据库中没有明显的前一行,因为行的排序是未定义的。因此,要获得上一行的值,必须定义顺序。这就是过关子句中ORDER的目的。我假设您的订单是StartTime的。在这种情况下,您可以使用如下代码:

代码语言:javascript
代码运行次数:0
运行
复制
declare @Table table(NID int, DgAcs char(1), CustAgentFl int, AgentId int, StartTime datetime, EndTime datetime, TransferFlag int, Desired int)

insert into @Table values
    (4565,  'C', 1, 358746, '2018-09-08 17:02:37', '2018-09-08 17:04:31', 1, 0), 
    (4565,  'C', 1, 358714, '2018-09-08 17:04:48', '2018-09-08 17:08:17', 1, 17), 
    (4565,  'C', 1, 359548, '2018-09-08 17:07:07', '2018-09-08 17:13:41', 1, 0), 
    (4565,  'C', 1, 358749, '2018-09-08 17:13:54', '2018-09-08 17:21:09', 1, 13), 
    (4565,  'A', 1, 351897, '2018-09-08 17:19:09', '2018-09-08 17:20:36', 0, 0), 
    (4565,  'C', 1, 358896, '2018-09-08 17:21:08', '2018-09-08 17:26:00', 0, 0)


; with cte as (
select
    *
    , LAG(EndTime, 1) over(order by StartTime) as PrevEndTime
    , DATEDIFF(s, LAG(EndTime, 1) over(order by StartTime), StartTime) as SecondsSinceLastEndNullable
    , ISNULL(DATEDIFF(s, LAG(EndTime, 1) over(order by StartTime), StartTime), 0) as SecondsSinceLastEnd
from @Table 
)

select
    *
    , iif(SecondsSinceLastEnd <= 0, '00:00:00', concat(SecondsSinceLastEnd / 3600, ':', FORMAT((SecondsSinceLastEnd / 60) % 60, 'D2'), ':', FORMAT(SecondsSinceLastEnd % 60, 'D2')))
    , iif(SecondsSinceLastEnd <= 0, '00:00:00', CONVERT(varchar, DATEADD(s, SecondsSinceLastEnd, 0), 108))
from cte

您将所需的输出格式化为时间,但请注意,时间中的两个时刻之间的差异并不完全是时间。可能要超过24小时。我向您展示了以所需格式转换秒差数的两种方法。第二种方法使用转换来获得时间值,但正如我所说的,这不会对超过24小时的间隙起作用。第一种方法将给出H:MM:SS格式的持续时间,其中H是小时数,可能大于23小时。

在Power中,您可以将其写为自定义查询

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53146495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档