Двухуровневый древовидный запрос
Существуют следующие вводные
Таблица (в рабочем примере выглядит как запрос)
CREATE TABLE your_table_name (
m_id NUMBER,
name VARCHAR2(255),
ind NUMBER
);
Данные
INSERT INTO your_table_name (m_id, name, ind)
VALUES
(1, 'John', 1),
(1, 'John', 2),
(2, 'Alice', 1),
(2, 'Alice', 2),
(3, 'Acinit', 1),
(3, 'Acinit', 3),
(3, 'Acinit', 2),
(4, 'Test', 1);
M_ID | NAME | IND |
---|---|---|
1 | John | 1 |
1 | John | 2 |
2 | Alice | 1 |
2 | Alice | 2 |
3 | Acinit | 1 |
3 | Acinit | 3 |
3 | Acinit | 2 |
4 | Test | 1 |
Необходимо создать такой запрос, при котором от каждого ind
формируются группы
т.е.
m_id | name | ind |
---|---|---|
group1 | 1 | |
1 | John | 1 |
2 | Alice | 1 |
3 | Acinit | 1 |
4 | Test | 1 |
group2 | 2 | |
1 | John | 2 |
2 | Alice | 2 |
3 | Acinit | 2 |
group3 | 3 | |
3 | Acinit | 3 |
Группы формируются внутри запроса от dual
.
select
null as m_id, 'group1' as name, 1 as ind from dual
union all
select
null as m_id, 'group2' as name, 2 as ind from dual
union all
select
null as m_id, 'group3' as name, 3 as ind from dual
Источник: Stack Overflow на русском