SAP HANA - разница между значениями столбцов в разных строках - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть таблица с приведенной ниже структурой

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 - 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, используя следующий запрос:

ВЫБРАТЬ Идентификатор, Задание, Выполнено, Дата начала, Дата окончания,
DATEDIFF (день,
MIN (Дата начала) OVER (PARTITION BY ID),
MAX (дата окончания) OVER (PARTITION BY ID)) Продолжительность
С таблицы;

Мне нужно использовать SAP HANA для выполнения этой задачи. Любая помощь в том, как я мог перенести этот SQL-запрос в HANA, очень ценится.

Спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

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     
...