Накопленные дни в строках с несколькими ограничениями SQL - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь выяснить, как вернуть одну строку для Актива, которая показывает общее количество дней накопленных периодов.Однако я хочу добавить только определенные периоды в зависимости от того, находится ли начальная дата в течение 10 дней после конечной даты предыдущего периода.

столбец TotalDays в данных образца: если у периода нет конечной даты, общее количество днейСегодня (13/10/2018) минус StartDate.

Разбивка таблицы ожидаемых результатов:

  • Строка 1 / Актив 1: TotalDays составляет 278, потому что

    • Период 2 начался 1 день после периода1 закончился
    • , а период 3 начался через 6 дней после окончания периода 2
    • , поэтому 63 + 29 + 186 = 278
  • Строка 2 /Актив 2: TotalDays равен 120, потому что

    • Период 1 и 2 оба открыты, поэтому используйте самую раннюю дату начала
    • Сегодня минус 15/06/2018 = 120
  • Строка 3 / Актив 3: TotalDays равен 66, потому что

    • Период 2 начался через 10 дней после окончания периода 1

Если у актива нет открытых периодов, он не будет отображаться на выходе.

Рад что-то прояснить, поскольку я знаю, что это немного сложно!

Большое спасибо.

Пример данных:

+-----+---------+--------+------------+------------+-----------+--------------------------------------+--------+
| Row | AssetID | Period | StartDate  |  EndDate   | TotalDays | DaysBetweenEndDateAndStartDateOfNext | Status |
+-----+---------+--------+------------+------------+-----------+--------------------------------------+--------+
|   1 |       1 |      1 | 01/01/2018 | 05/03/2018 |        63 | NULL                                 | Closed |
|   2 |       1 |      2 | 06/03/2018 | 04/04/2018 |        29 | 1                                    | Closed |
|   3 |       1 |      3 | 10/04/2018 | NULL       |       186 | 6                                    | Open   |
|   4 |       2 |      1 | 15/06/2018 | NULL       |       120 | NULL                                 | Open   |
|   5 |       2 |      2 | 01/07/2018 | NULL       |       104 | NULL                                 | Open   |
|   6 |       3 |      1 | 01/02/2018 | 10/02/2018 |         9 | NULL                                 | Closed |
|   7 |       3 |      2 | 08/08/2018 | NULL       |        66 | 179                                  | Open   |
+-----+---------+--------+------------+------------+-----------+--------------------------------------+--------+

Ожидаемый результат:

+-----+---------+------------+---------+-----------+
| Row | AssetID | StartDate  | EndDate | TotalDays |
+-----+---------+------------+---------+-----------+
|   1 |       1 | 01/01/2018 | NULL    |       278 |
|   2 |       2 | 15/06/2018 | NULL    |       120 |
|   3 |       3 | 08/08/2018 | NULL    |        66 |
+-----+---------+------------+---------+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...