Join таблицы с собой

Molodb
Дата: 21.09.2015 09:59:27
Здравствуйте есть следующая таблица:
CREATE TABLE "AKOSHORI_TEST"."TEST76ES" 
   (	"OBID" NUMBER(10,0), 
	"YEAR" NUMBER(10,0), 
	"EQID" NUMBER(10,0), 
	"START_DATE_FACT" DATE, 
	"END_DATE_FACT" DATE, 
	"REPAIR_T" VARCHAR2(20 BYTE)
   ) 


C такими данными:
insert into test76es values (1,201501,11, to_date('2015-01-05', 'YYYY-MM-DD'),to_date('2015-01-18', 'YYYY-MM-DD'),'remont_1');
insert into test76es values (1,201501,22, to_date('2015-01-25', 'YYYY-MM-DD'),to_date('2015-01-30', 'YYYY-MM-DD'),'remont_1');
insert into test76es values (1,201505,33, to_date('2015-05-05', 'YYYY-MM-DD'),to_date('2015-05-14', 'YYYY-MM-DD'),'remont_3');
insert into test76es values (1,201608,22, to_date('2016-08-07', 'YYYY-MM-DD'),to_date('2016-08-16', 'YYYY-MM-DD'),'remont_2');
insert into test76es values (2,201503,77, to_date('2015-03-05', 'YYYY-MM-DD'),to_date('2015-03-14', 'YYYY-MM-DD'),'remont_12');
insert into test76es values (3,201704,25, to_date('2017-04-10', 'YYYY-MM-DD'),to_date('2017-04-16', 'YYYY-MM-DD'),'remont_6');
insert into test76es values (3,201602,66, to_date('2016-02-10', 'YYYY-MM-DD'),to_date('2016-02-16', 'YYYY-MM-DD'),'remont_66');


Я бы хотел чтобы в рамках одного года, для каждого месяца для которого есть запись, приписывались бы все уникальные значения EQID, впрочем проще будет показать наглядно...

YEAR  MONTH_id          OBID            EQID
2015	  01	         1	         11
2015	  01	         1	         22
2015	  01	         1	         33
2015	  05	         1	         33
2015	  05	         1	         11
2015	  05	         1	         22
2015	  03	         2	         77
ArtNick
Дата: 21.09.2015 10:27:14
Molodb,
Судя по отсутствию ответов твоя хотелка осталась непонятой.
Molodb
Дата: 21.09.2015 10:34:32
Ну... требуется сделать так чтобы для каждого месяца ,для того или иного года, выводились все возможные комбинации месяца+EQID.
Например, в 2015 году для OBID 1 есть 3 записи: две в январе с EQID 11 и 22 и одна запись в мае с EQID 33.
В итоге селект заместо трех строк для этого года и OBID должен вывести шесть:
YEAR  MONTH_id          OBID            EQID
2015	  01	         1	         11
2015	  01	         1	         22
2015	  01	         1	         33
2015	  05	         1	         33
2015	  05	         1	         11
2015	  05	         1	         22
bishnike
Дата: 21.09.2015 11:41:21
Molodb,

а что не получилось то? Название топика говорит что вы задачу решили.

Или интуитивно понятно что надо джойнить "с собой", но как непонятно?

+
with TEST76ES(
  "OBID", 
  "YEAR", 
  "EQID", 
  "START_DATE_FACT", 
  "END_DATE_FACT", 
  "REPAIR_T"
) as (
  select 1,201501,11, to_date('2015-01-05', 'YYYY-MM-DD'),to_date('2015-01-18', 'YYYY-MM-DD'),'remont_1'  from dual union all
  select 1,201501,22, to_date('2015-01-25', 'YYYY-MM-DD'),to_date('2015-01-30', 'YYYY-MM-DD'),'remont_1'  from dual union all
  select 1,201505,33, to_date('2015-05-05', 'YYYY-MM-DD'),to_date('2015-05-14', 'YYYY-MM-DD'),'remont_3'  from dual union all
  select 1,201608,22, to_date('2016-08-07', 'YYYY-MM-DD'),to_date('2016-08-16', 'YYYY-MM-DD'),'remont_2'  from dual union all
  select 2,201503,77, to_date('2015-03-05', 'YYYY-MM-DD'),to_date('2015-03-14', 'YYYY-MM-DD'),'remont_12' from dual union all
  select 3,201704,25, to_date('2017-04-10', 'YYYY-MM-DD'),to_date('2017-04-16', 'YYYY-MM-DD'),'remont_6'  from dual union all
  select 3,201602,66, to_date('2016-02-10', 'YYYY-MM-DD'),to_date('2016-02-16', 'YYYY-MM-DD'),'remont_66' from dual
)
select 
  substr(t1.YEAR, 1, 4) as year,
  substr(t1.YEAR, 5, 2) as month_id,
  t1.OBID,
  t2.EQID
from 
  TEST76ES t1
  inner join TEST76ES t2
    on t2.OBID = t1.OBID
      and substr(t2.YEAR, 1, 4) = substr(t1.YEAR, 1, 4)
where 1 = 1
  and t1.OBID = 1
group by
  substr(t1.YEAR, 1, 4),
  substr(t1.YEAR, 5, 2),
  t1.OBID,
  t2.EQID
Molodb
Дата: 21.09.2015 12:36:06
автор
Или интуитивно понятно что надо джойнить "с собой", но как непонятно?


Вот скорее, вот это. Спасибо за помощь!)