Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сгруппировать данные по месяцам (за периоды) / 20 сообщений из 20, страница 1 из 1
19.09.2016, 12:28:18
    #39311230
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Добрый день!
Помогите, не могу решить так сделать выборку.
Вообщем, такая задача. Есть таблица с номерами договоров, номерами подразделений, что открыли договор, датами начала и конца (около 14 тис.строк):
ID_department ID DATA_BEGIN DATA_END12 1342112.01.1999 10: 50:0012.09.2999 10:50:00 12 1352211.02.2004 00:00:0002.08.2015 00:00:0010 1592315.02.2014 13:00:0005.06.2018 13:00:0010 1932413.03.2013 00:00:0008.07.2017 09:00:00 15 1952512.09.2000 00:00:0003.04.2016 00:00:00.........

Нужно сделать выборку сколько активных договоров было в промежутке времени (к примеру с 01.08.2016 - 31.12.2016) с группировкой по месяцам:
ID_department SUM(ID) Month-year12 2 01.09.201612 2 01.10.201612 3 01.11.201610 21 01.12.201610 23 01.09.201610 23 02.10.201610 25 03.11.2016.........
Есть у кого то варианты?
...
Рейтинг: 0 / 0
19.09.2016, 12:40:49
    #39311235
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Откройте для себя trunc.
...
Рейтинг: 0 / 0
19.09.2016, 14:15:51
    #39311275
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
dmdmdm, спасибо, но здесь больше вопрос как искать внутри диапазона за месяца, а потом сгруппировать по соответственным месяцам.
...
Рейтинг: 0 / 0
19.09.2016, 14:21:24
    #39311277
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
year(date)*1000000+month(date)
...
Рейтинг: 0 / 0
19.09.2016, 14:25:11
    #39311280
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
982183,
бред.

Jeka99
зачем искать внутри диапазона? почему не разбить диапазон на месяца как Вам и советуют и не сгруппировать по месяцам?
...
Рейтинг: 0 / 0
19.09.2016, 14:32:15
    #39311282
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Точно бред. Не прочитал всё.
...
Рейтинг: 0 / 0
19.09.2016, 14:37:15
    #39311285
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Jeka99,

19302171
...
Рейтинг: 0 / 0
19.09.2016, 15:06:04
    #39311306
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Vint, отдельными выборками я умею выбирать помесячно с диапазона. А от как его "автоматизировать", что бы не делать 10 выборок с: DBEGIN <= TO_DATE('31.05.2015','DD/MM/YYYY') and ea.DEND >= TO_DATE('01.05.2015','DD/MM/YYYY').
...
Рейтинг: 0 / 0
19.09.2016, 15:14:04
    #39311315
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Хорошим тоном считается подготовить test case и задавать вопрос по нему.
Я терпеливый и сделаю еще одну воспитательную попытку.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as
 (select to_date('01.01.2016', 'dd.mm.yyyy') d, 10 sum1 from dual union all
  select to_date('21.01.2016', 'dd.mm.yyyy'), 20 sum1 from dual union all
  select to_date('01.02.2016', 'dd.mm.yyyy'), 30 sum1 from dual union all
  select to_date('05.02.2016', 'dd.mm.yyyy'), 40 sum1 from dual union all
  select to_date('15.02.2016', 'dd.mm.yyyy'), 50 sum1 from dual
 )

select trunc(d, 'month'), sum(sum1)
  from t
 group by trunc(d, 'month')
 order by 1
...
Рейтинг: 0 / 0
19.09.2016, 15:44:14
    #39311342
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
dmdmdm,

ТСу ваш пример не поможет.
Ему нужно один и тот же договор отразить по нескольким месяцам, а у вас один договор попадет в один месяц.
...
Рейтинг: 0 / 0
19.09.2016, 15:45:43
    #39311343
Сгруппировать данные по месяцам (за периоды)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with t(ID_department, DATA_BEGIN,DATA_END ) as (
       select 12, to_date('12.01.1999 10:50:00','dd.mm.rrrr hh24:mi:ss'), to_date('12.09.2009 10:50:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 12, to_date('11.02.2004 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('02.08.2015 00:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 10, to_date('15.02.2014 13:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('05.06.2018 13:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 10, to_date('13.03.2013 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('08.07.2017 09:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 15, to_date('12.09.2000 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('03.04.2016 00:00:00','dd.mm.rrrr hh24:mi:ss') from dual),
     dd as (select min(DATA_BEGIN) min_d, max(DATA_END) max_d from t),
     d as  (select distinct trunc(min_d + (level - 1), 'mm') as mm_yyyy from dd connect by level <= (select max_d - min_d from dd))  
select d.mm_yyyy, t.ID_department, count(*) 
from d
join t on trunc(DATA_BEGIN, 'mm') = d.mm_yyyy or trunc(DATA_END, 'mm') = d.mm_yyyy
group by d.mm_yyyy, t.ID_department
order by 1 
;
...
Рейтинг: 0 / 0
19.09.2016, 15:52:11
    #39311351
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Может ТС этого хотел,

И чем это отличается от 19302171 ?
...
Рейтинг: 0 / 0
19.09.2016, 15:56:39
    #39311356
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Jeka99,
мне лень (счас нет времени) набирать данные, если будет в виде
with t(ID_department, ID, DATA_BEGIN, DATA_END ) as (
select
)
select * from t
сделаю

еслі коротко то
для каждого періода надо сгенерить месяца между DATA_BEGIN, DATA_END потом сгрупировать


ps
генерить можно по разному
.....
stax
...
Рейтинг: 0 / 0
19.09.2016, 16:16:58
    #39311376
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
dmdmdm, Вот test-case, там выборка за 1 месяц. Нужно автоматически за каждый месяц.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
with t1 as
 (select 12  ID_department,  00001  ID, to_date('01.08.1997  0:00:00', 'DD.MM.YYYY HH24:MI:SS') data_b,  to_date('18.01.2011  0:00:00', 'DD.MM.YYYY HH24:MI:SS') data_e from dual union all
select 7, 00002, to_date('06.08.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00003, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 21.12.2011  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00004, to_date('01.01.1998  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 28.07.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00005, to_date('30.11.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 01.08.2013  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00006, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2017  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00007, to_date('02.06.1997  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 08.10.2013  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00008, to_date('04.02.2000  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2017  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00009, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 29.10.2007  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00010, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00011, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2018  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00012, to_date('26.01.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00013, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 27.10.2014  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00014, to_date('09.01.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 26.02.2012  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00015, to_date('06.02.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00016, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 30.03.2014  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00017, to_date('23.05.2000  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00018, to_date('25.01.2002  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 10, 00019, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00020, to_date('23.08.1995  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 27.04.2006  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00021, to_date('08.12.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 10.08.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual
 )
select ID_department, count(ID),  to_date('01062015','ddmmyyyy') from t1
where DATA_B <= TO_DATE('31.05.2015','DD/MM/YYYY') and DATA_E >= TO_DATE('01.05.2015','DD/MM/YYYY')
GROUP by ID_department;
...
Рейтинг: 0 / 0
19.09.2016, 16:18:20
    #39311378
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
stax.., test case добавил выше
...
Рейтинг: 0 / 0
19.09.2016, 16:30:34
    #39311388
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Jeka99,

снимись с ручника и прекрати изображать чукчу писателя. пройди по ссылке и адаптируй под себя.
...
Рейтинг: 0 / 0
19.09.2016, 16:50:51
    #39311410
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Vint,
если все было так просто сделал бы, у мене не выходит к сожалению.
...
Рейтинг: 0 / 0
19.09.2016, 16:51:27
    #39311411
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Jeka99stax.., test case добавил выше

накидал по быстрому, проверте на границах диапазонов

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
with t(ID_department, DATA_BEGIN,DATA_END ) as (
       select 12, to_date('12.01.1999 10:50:00','dd.mm.rrrr hh24:mi:ss'), to_date('12.09.1999 10:50:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 12, to_date('11.02.1999 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('02.04.1999 00:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 10, to_date('15.01.2004 13:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('05.06.2004 13:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 10, to_date('13.03.2004 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('14.04.2004 09:00:00','dd.mm.rrrr hh24:mi:ss') from dual union all
       select 15, to_date('12.09.2000 00:00:00','dd.mm.rrrr hh24:mi:ss'), to_date('12.09.2000 00:00:01','dd.mm.rrrr hh24:mi:ss') from dual
)
select ID_department,add_months(trunc(data_begin,'mm'),rn-1) mg,count(*) 
from t,xmltable('1 to xs:integer($n)' passing months_between(last_day(DATA_END)+1,trunc(DATA_BEGIN,'mm')) as "n" columns rn number path '.')
group by ID_department,add_months(trunc(data_begin,'mm'),rn-1)
order by 1,2
/
SQL> /

ID_DEPARTMENT MG         COUNT(*)
------------- -------- ----------
           10 01.01.04          1
           10 01.02.04          1
           10 01.03.04          2
           10 01.04.04          2
           10 01.05.04          1
           10 01.06.04          1
           12 01.01.99          1
           12 01.02.99          2
           12 01.03.99          2
           12 01.04.99          2
           12 01.05.99          1
           12 01.06.99          1
           12 01.07.99          1
           12 01.08.99          1
           12 01.09.99          1
           15 01.09.00          1

16 rows selected.



зы
-1 возможно лішнее

.....
stax
...
Рейтинг: 0 / 0
19.09.2016, 17:14:34
    #39311423
Jeka99
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
stax..,
все прекрасно работает, огромное Вам спасибо! На диапазоне тоже.
...
Рейтинг: 0 / 0
19.09.2016, 18:12:40
    #39311458
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сгруппировать данные по месяцам (за периоды)
Jeka99stax..,
все прекрасно работает, огромное Вам спасибо! На диапазоне тоже.
для діапазона мона попроще
+ месяцы когда 0 договоров

проверте генерацію месяцов с учетом специфики month-between
,m as (--генерим необходимые месяцы
select add_months(TO_DATE('01.01.2015','DD/MM/YYYY'),rn) mg
from xmltable('0 to xs:integer($n)' passing
months_between(TO_DATE('31.05.2015','DD/MM/YYYY'),TO_DATE('01.01.2015','DD/MM/YYYY'))
as "n" columns rn number path '.')
)


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
with t1 as
 (select 12  ID_department,  00001  ID, to_date('01.08.1997  0:00:00', 'DD.MM.YYYY HH24:MI:SS') data_b,  to_date('18.01.2011  0:00:00', 'DD.MM.YYYY HH24:MI:SS') data_e from dual union all
select 7, 00002, to_date('06.08.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00003, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 21.12.2011  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00004, to_date('01.01.1998  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 28.07.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00005, to_date('30.11.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 01.08.2013  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00006, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2017  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00007, to_date('02.06.1997  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 08.10.2013  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12, 00008, to_date('04.02.2000  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2017  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00009, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 29.10.2007  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00010, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13, 00011, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2018  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00012, to_date('26.01.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00013, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 27.10.2014  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00014, to_date('09.01.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 26.02.2012  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00015, to_date('06.02.2004  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00016, to_date('01.01.1990  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 30.03.2014  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00017, to_date('23.05.2000  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 14, 00018, to_date('25.01.2002  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 10, 00019, to_date('16.09.1996  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.12.2999  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
--
select 7, 10020, to_date('23.03.2015  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 27.04.2015  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 10,10019, to_date('16.02.2015  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 31.03.2015  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 12,10006, to_date('01.04.2014  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 28.02.2015  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 13,10009, to_date('16.05.1015  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 29.10.2017  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
--
select 7, 00020, to_date('23.08.1995  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 27.04.2006  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual union all
select 7, 00021, to_date('08.12.1999  0:00:00', 'DD.MM.YYYY HH24:MI:SS'), to_date(' 10.08.2016  0:00:00', 'DD.MM.YYYY HH24:MI:SS')from dual
 )
,m as (--генерим необходимые месяцы
  select add_months(TO_DATE('01.01.2015','DD/MM/YYYY'),rn) mg
  from xmltable('0 to xs:integer($n)' passing
          months_between(TO_DATE('31.05.2015','DD/MM/YYYY'),TO_DATE('01.01.2015','DD/MM/YYYY'))
          as "n" columns rn number path '.')
)
select
 ID_department, mg,count(*) cc
from t1,m
where
     DATA_B <= TO_DATE('31.05.2015','DD/MM/YYYY') and DATA_E >= TO_DATE('01.01.2015','DD/MM/YYYY')
 and mg between DATA_B and DATA_E
GROUP by ID_department,mg
order by 1,2
--select * from m
/
SQL> /

ID_DEPARTMENT MG                 CC
------------- ---------- ----------
            7 01.01.2015          3
            7 01.02.2015          3
            7 01.03.2015          3
            7 01.04.2015          4
            7 01.05.2015          3
           10 01.01.2015          1
           10 01.02.2015          1
           10 01.03.2015          2
           10 01.04.2015          1
           10 01.05.2015          1
           12 01.01.2015          3
           12 01.02.2015          3
           12 01.03.2015          2
           12 01.04.2015          2
           12 01.05.2015          2
           13 01.01.2015          3
           13 01.02.2015          3
           13 01.03.2015          3
           13 01.04.2015          3
           13 01.05.2015          3
           14 01.01.2015          4
           14 01.02.2015          4
           14 01.03.2015          4
           14 01.04.2015          4
           14 01.05.2015          4

25 rows selected.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сгруппировать данные по месяцам (за периоды) / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]