[HANA]根据HANA视图中的状态计算两行之间的时差

2020-09-18 23:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我有一个关于如何根据状...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个关于如何根据状态计算两行之间的时差的问题。 在这里,我提供了一个示例:

ID日期状态

A1 2017年11月23日初始

A2 23.11.2017初始

B1 2017年11月24日初始

A1 2017年11月26日测试

A2 2017年11月28日被阻止

B1 2017年11月28日测试

A1 02.12.2017完成

A2 2017年3月12日被阻止

B1 2017年5月12日被阻止

A2 2017年12月13日完成

B1 2017年12月13日完成

现在,我想创建一列,其中的值是特定ID从"状态=初始"到"状态=完成"的持续时间。 在此示例中,A1,A2和B1的持续时间分别为9、20、19。
我该如何编写有关这种想法的sql脚本?
谢谢!

2条回答
spaceman01
2020-09-18 23:58 .采纳回答

一种简单的解决方案可以是对数据进行自我联接,将其限制为所需的状态。

作为一个示例...考虑WITH子句仅准备我的示例数据; 在您的实际示例中,您可以删除WITH子句,并使用表格/数据变量代替" datatab"。 在下面的示例中,我使用了days_between函数来计算日期之间的天数。 根据您的需要,您还必须使用其他东西。

,datatab为(
         从哑元中选择" A1"作为" ID",选择TO_DATE('20171123')作为"日期",将"初始"作为"状态"
   联合从虚拟对象中选择" A2"作为" ID",选择TO_DATE('20171123')作为"日期",将"初始"作为"状态"
   联合从虚拟对象中选择" A3"作为" ID",选择TO_DATE('20171123')作为"日期",将"初始"作为"状态"
   联合从虚拟机中选择" A1"作为" ID",选择TO_DATE('20171202')作为"日期",将"完成"作为"状态"
   联合从虚拟对象中选择" A3"作为" ID",选择TO_DATE('20171125')作为"日期",将"完成"作为"状态"
 )
 选择initialData。" ID",
        initialData。" Date"作为" StartDate",
        completeData。" Date"作为" EndDate",
        days_between(initialData。" Date",completedData。" Date")作为" Days Between"
 从datatab作为initialData从内部联接datatab作为completedData
   在initialData。" ID" = completedData。" ID"上
   和initialData。" Status" ='初始'
   和completedData。"状态" ="已完成";
 

致谢,
弗洛里安

一周热门 更多>