Я написал решение проблемы с использованием PL / SQL и SQL, и я не могу не думать, что это можно сделать на 100% в SQL, но я изо всех сил пытаюсь начать.
Вотструктура двух таблиц (если это помогает, сценарии для их создания находятся в конце вопроса)
Таблица t1 (первичный ключ - оба отображаемых столбца)
ID TYPE
1 A
1 B
1 C
2 A
2 B
3 B
Столбец типа представляет собой внешний ключ к таблице T2, который содержит следующие данные:
Таблица t2 (первичный ключ - тип)
Type Desc
A xx
B xx
C xx
Таким образом, учитывая данные в T1, нужный мне результат будетбыть:
Для идентификатора 1, потому что он имеет все типы в таблице внешнего ключа, я бы возвратил литерал "Все"
Для идентификатора 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')
/