sql - SAP HANA - 不同行中列值之间的差异
问题描述
我有一个具有以下结构的表
ID - Task | Performed BY | Start Date | End Date
1 --- Task 3 --- John --------- 9/16/2017 - 9/17/2017
1 --- Task 2 --- Jim ----------- 9/14/2017 - 9/16/2017
1 --- Task 1 --- John --------- 9/10/2107 - 9/13/2017
2 --- Task 2 --- Jane --------- 9/14/2017 - 9/15/2017
2 --- Task 1 --- Claire -------- 9/12/2017 - 9/13/2017
我需要创建一个新列,显示为 SAP HANA 中的每个 ID 执行所有任务所花费的总时间(持续时间)。即最后一个任务的结束日期减去每个 ID 的第一个任务的开始日期。
以下是我需要的结果:
ID - Task | Performed BY | Start Date | End Date | Duration
1 --- Task 3 --- John --------- 9/16/2017 - 9/17/2017 -- 7 Days
1 --- Task 2 --- Jim ----------- 9/14/2017 - 9/16/2017 -- 7 Days
1 --- Task 1 --- John --------- 9/10/2107 - 9/13/2017 -- 7 Days
2 --- Task 2 --- Jane --------- 9/14/2017 - 9/15/2017 -- 3 Days
2 --- Task 1 --- Claire -------- 9/12/2017 - 9/13/2017 -- 3 Days
这可以使用以下查询在 SQL 中完成:
SELECT ID, Task, Performed By, Start Date, End Date,
DATEDIFF(day,
MIN(Start Date) OVER (PARTITION BY ID),
MAX(End Date) OVER (PARTITION BY ID)) Duration
FROM Table;
我需要使用 SAP HANA 来执行此任务。非常感谢有关如何将此 SQL 查询迁移到 HANA 的任何帮助。
谢谢!
解决方案
SAP HANA 支持标准 SQL窗口函数,还提供日期计算函数days_between
。
你可以这样写代码:
SELECT "ID", "Task", "Performed By", "Start Date", "End Date"
, DAYS_BETWEEN(MIN("Start Date") OVER (PARTITION BY "ID"),
MAX("End Date") OVER (PARTITION BY "ID")) "Duration"
FROM tasks
order by "ID", "Task";
ID Task Performed By Start Date End Date Duration
1 Task 1 John 10/09/2017 13/09/2017 7
1 Task 2 Jim 14/09/2017 16/09/2017 7
1 Task 3 John 16/09/2017 17/09/2017 7
2 Task 1 Claire 12/09/2017 13/09/2017 3
2 Task 2 Jane 14/09/2017 15/09/2017 3
推荐阅读
- c# - angular5/MVC 中的引导布局更改
- swift - “AVCapturePhotoOutput”类型的值没有成员“captureStillImageAsynchronously”
- java - Firestore:从firestore获取数据并从对象获取值并将其添加到listview
- git - 如何在 git 中修复“修改后的内容,未跟踪的内容”?
- aerospike - 如何从 Aerospike 恢复数据
- java - 我收到错误:选项 http://10.100.8.58:8080/user/view 401 () ,
- reactjs - 在 ReactJS 中将 HTML 文件转换为 PDF
- java - “adb shell date > date.txt”命令执行在 Mac 中使用 Process exec 不起作用
- ios - 如何快速隐藏嵌入在导航堆栈中的视图控制器中的选项卡栏?
- html - 带有平滑圆角的 CSS 三角形