Member 10493886 Ответов: 2

Сделайте диапазон месяцев между периодом в 3 месяца


I want to make a select that gives me a range of months between a period of 3 months.
Как это:
MONTH | YEAR
-----------------------
08 | 2019
11 | 2019
02 | 2020
05 | 2020
08 | 2020


Что я уже пробовал:

мне нужен такой результат для ежеквартального отчета

CHill60

Раздел "Что я пробовал:" предназначен для того, чтобы вы поместили код, который вы пробовали. Мы не пишем код на заказ.

OriginalGriff

А что вы пробовали?
Где ты застрял?
Какая помощь вам нужна?

Benktesh Sharma

Вы смотрите на необработанные даты и получаете диапазон месяцев, начиная с первой даты? Или вы просто хотите создать список, начинающийся с 08/2019 и значения через 3 месяца после каждого из них?

Кроме того, вы ищете строго SQL, C# или другой язык?

OriginalGriff

Подсказка: вот почему вопросы имеют теги на них ...

Benktesh Sharma

:). Теги-это Oracle, VB.NET, ASP.NET4, и именно поэтому я задал вопрос, относящийся к конкретному языку.

2 Ответов

Рейтинг:
1

MadMyche

Oracle, как и большинство баз данных SQL; имеет BETWEEN состояние, которое, вероятно, было бы хорошим местом для начала.

SELECT *
FROM order_details
WHERE order_date BETWEEN TO_DATE ('2014/02/01', 'yyyy/mm/dd')
AND TO_DATE ('2014/02/28', 'yyyy/mm/dd');
Ссылка: Oracle / PLSQL: между условиями[^]


Рейтинг:
0

Wendelius

Возможно, рекурсивный CTE-это то, что вам нужно, что-то вроде

WITH Months (ActualDate) AS (
   SELECT TO_DATE('01.08.2019', 'DD.MM.YYYY') AS ActualDate
   FROM Dual
   UNION ALL
   SELECT ADD_MONTHS(a.ActualDate, 3)    AS ActualDate
   FROM   Months a
   WHERE  a.ActualDate <= TO_DATE('01.08.2020', 'DD.MM.YYYY')
)
SELECT m.ActualDate,
       TO_CHAR(m.ActualDate, 'MM') AS Month,
       TO_CHAR(m.ActualDate, 'YYYY') AS Year
FROM   Months m;