У меня есть следующая таблица базы данных (я использую базу данных Oracle):
ID | BEGINN_DATE | END_DATE |
------------------------------------------------------
114 | 11.07.2019 | 30.09.2019 |
------------------------------------------------------
115 | 01.10.2019 | 05.02.2020 |
------------------------------------------------------
116 | 15.04.2018 | 05.02.2020 |
------------------------------------------------------
117 | 01.01.2019 | 20.02.2019 |
------------------------------------------------------
118 | 21.02.2019 | NULL |
Теперь мне нужен способ вычислить все первые дни кварталов, которые представлены в начале интервала, начиная с значение столбца BEGINN_DATE и значение столбца END_DATE .
Сначала мы должны показать этот кортеж в таблице выше:
ID | BEGINN_DATE | END_DATE |
------------------------------------------------------
114 | 11.07.2019 | 30.09.2019 |
Мне нужен SQL Результат, подобный следующему:
'01.07.2019'
(Первый день квартала представляет для меня четверть квилта, которая существует в начале интервала, начиная со значения столбца BEGINN_DATE и значения столбца END_DATE )
Во-вторых, мы должны показать это кортеж:
ID | BEGINN_DATE | END_DATE |
------------------------------------------------------
115 | 01.10.2019 | 05.02.2020 |
Мне нужен SQL Результат, подобный этому:
'01.10.2019'
'01.01.2020'
В-третьих, мы должны показать этот кортеж:
ID | BEGINN_DATE | END_DATE |
-----------------------------------------------------
116 | 15.04.2018 | 05.02.2020 |
Здесь мне нужен SQL Результат примерно так:
'01.04.2018'
'01.07.2018'
'01.10.2018'
'01.01.2019'
'01.04.2019'
'01.07.2019'
'01.10.2019'
'01.01.2020'
// РЕДАКТИРОВАТЬ: последний пример, который может включать NULL в столбце END_DATE:
ID | BEGINN_DATE | END_DATE |
------------------------------------------------------
117 | 03.04.2019 | NULL |
Здесь мне нужен SQL Результат как это (список результатов должен увеличиваться с выходом нового значения, зависит от времени выполнения оператора SQL, если начался новый квартал):
'01.04.2019'
'01.07.2019'
'01.10.2019'
'01.01.2020'
Есть ли способ решения для вычисления чего-либо например, используя предложение SQL SELECT. На данный момент я понятия не имею, как я могу начать решать эту проблему. Надеюсь, понятно, что я хочу сделать. Извините, мои знания английского языка sh не очень хороши.
Спасибо за помощь!
// РЕДАКТИРОВАТЬ
Я добавил новый столбец ACCOUNT_ID, потому что мои требования были выбраны вчера. Это моя новая таблица:
ID | ACCOUNT_ID | BEGINN_DATE | END_DATE |
-----------------------------------------------------------------------
1 | 1 | 01.10.2019 | 30.10.2019 |
-----------------------------------------------------------------------
2 | 2 | 01.11.2019 | 24.11.2019 |
-----------------------------------------------------------------------
3 | 3 | 25.11.2019 | 03.01.2020 |
-----------------------------------------------------------------------
4 | 1 | 04.01.2020 | 04.02.2020 |
-----------------------------------------------------------------------
5 | 2 | 05.02.2020 | NULL |
-----------------------------------------------------------------------
Теперь я хочу получить такой результат:
ID | ACCOUNT_ID | BEGINN_DATE | END_DATE | QUARTER
-------------------------------------------------------------------------------------
1 | 1 | 01.10.2019 | 30.10.2019 | 01.10.2019
-------------------------------------------------------------------------------------
2 | 2 | 01.11.2019 | 24.11.2019 | 01.10.2019
-------------------------------------------------------------------------------------
3 | 3 | 25.11.2019 | 03.01.2020 | 01.10.2019
-------------------------------------------------------------------------------------
3 | 3 | 25.11.2019 | 03.01.2020 | 01.01.2020
-------------------------------------------------------------------------------------
4 | 1 | 04.01.2020 | 04.02.2020 | 01.01.2020
-------------------------------------------------------------------------------------
5 | 2 | 05.02.2020 | NULL | 01.01.2020
-------------------------------------------------------------------------------------
Но, к сожалению, я получаю этот результат (для ACCOUNT_ID 3 я получаю только кортеж за квартал 01.10 .2019 и за квартал 01.01.2020 отсутствует кортеж):
ID | ACCOUNT_ID | BEGINN_DATE | END_DATE | QUARTER
-------------------------------------------------------------------------------------
1 | 1 | 01.10.2019 | 30.10.2019 | 01.10.2019
-------------------------------------------------------------------------------------
2 | 2 | 01.11.2019 | 24.11.2019 | 01.10.2019
-------------------------------------------------------------------------------------
3 | 3 | 25.11.2019 | 03.01.2020 | 01.10.2019
-------------------------------------------------------------------------------------
4 | 1 | 04.01.2020 | 04.02.2020 | 01.01.2020
-------------------------------------------------------------------------------------
5 | 2 | 05.02.2020 | NULL | 01.01.2020
-------------------------------------------------------------------------------------
Есть ли ошибка в расчете? Можно решить эту проблему?