Я написал решение проблемы с использованием PL / SQL и SQL, и я не могу избавиться от мысли, что это можно сделать на 100% в SQL, но я пытается начать работу.
Вот структура двух таблиц (если это поможет, сценарии для их создания находятся в конце вопроса)
Таблица t1 (первичный ключ отображается в обоих столбцах)
ID TYPE
1 A
1 B
1 C
2 A
2 B
3 B
Столбец Тип - это внешний ключ к таблице T2, которая содержит следующие данные:
Таблица t2 (первичный ключ - Type)
Type Desc
A xx
B xx
C xx
Итак, учитывая данные в T1, мне нужен результат:
Для ID 1, поскольку он имеет все типы в таблице внешнего ключа, я бы вернул литерал "All"
Для идентификатора 2, поскольку он имеет два типа, я хотел бы вернуть «A и B» (обратите внимание на разделитель)
И, наконец, для идентификатора 3, поскольку он имеет один тип, я хотел бы вернуть только «B» "
Как и было обещано, вот скрипты для создания всех упомянутых объектов.
create table t2(type varchar2(1),
description varchar2(100)
)
/
insert into t2
values ('A', 'xx')
/
insert into t2
values ('B', 'xx')
/
insert into t2
values ('C', 'xx')
/
alter table t2 add constraint t2_pk primary key (type)
/
create table t1 (id number(10),
type varchar2(1)
)
/
alter table t1 add constraint t1_pk primary key(id, type)
/
alter table t1 add constraint t1_fk foreign key (type)
references t2(type)
/
insert into t1
values (1, 'A')
/
insert into t1
values (1, 'B')
/
insert into t1
values (1, 'C')
/
insert into t1
values (2, 'A')
/
insert into t1
values (2, 'B')
/
insert into t1
values (3, 'B')
/