所以你想列出所有的班级教学的校园?对于像
class_id | campus_id
math101 | NY1, PA1
pyt218 | PA1, VA1, NY1
...
的输出,你可以使用现有的wm_concat功能的Oracle 10g:
with d as (
select 'NY1' as campus_id, 'math101' as class_id from dual union all
select 'PA1' as campus_id, 'math101' as class_id from dual union all
select 'VA1' as campus_id, 'pyt218' as class_id from dual union all
select 'PA1' as campus_id, 'pyt218' as class_id from dual union all
select 'PA1' as campus_id, 'class3' as class_id from dual union all
select 'VA1' as campus_id, 'class3' as class_id from dual union all
select 'VA1' as campus_id, 'math101' as class_id from dual union all
select 'NY1' as campus_id, 'class3' as class_id from dual
)
select class_id, wm_concat(campus_Id)
From d
group by class_id
在Oracle 11.2,也可以用来产生相同结果的新功能“LISTAGG” :
with d as (
select 'NY1' as campus_id, 'math101' as class_id from dual union all
...
)
select class_id, listagg(campus_id, ',') within group (order by campus_id)
From d
group by class_id
这对我来说看起来是正确的,是什么问题? – Bob 2015-03-31 01:14:21
问题是math101例如可能会在NY1和PA1校区中教授。 – 2015-03-31 03:57:46
这将是class_campus表中的两个条目。一个用于NY1的math101和一个用于PA1的math101。您将使表中的class_id和campus_id唯一。你目前的样本有两次与PA1连接的pyt218,我认为这不是有效的。如果是这样,请解释。 – Bob 2015-03-31 12:29:44