【发布时间】:2015-07-16 12:15:12
【问题描述】:
我正在尝试使用以下查询检索race_code、chara_code 和reason_code 作为列表:
SELECT a.pid,
LISTAGG(a.rc, ',') WITHIN GROUP (ORDER BY a.rc) AS race,
LISTAGG(a.cc, ',') WITHIN GROUP (ORDER BY a.cc) as chara_codes,
LISTAGG(a.rrc, ',') WITHIN GROUP (ORDER BY a.rrc) AS removal_reason
FROM (
SELECT UNIQUE
p.person_id pid,
r.race_code rc,
c.characteristic_code cc,
rr.removal_reason_code rrc
FROM person p left outer join race r on p.person_id = r.person_id
left outer join characteristic c on p.person_id = c.person_id
left outer join placement_episode pe on p.person_id = pe.child_id
left outer join removal_reason rr on pe.placement_episode_id = rr.placement_episode_id
) a
GROUP BY a.pid
我在引用了link1 和link2 等链接后尝试了这个查询。但是在这样做之后,我也无法获得所有字段的唯一值。
我的 o/p 是这样的:
pid race_code chara_code reason_code
1 a,b,b,c c1,c1,c2,c3 r1,r2,r3,r3
2 a,c,d,d,d c1,c2,c2 r3,r3
and so on.
如果我尝试一次只检索一个字段并保持所需的连接操作,那么它会给出正确的结果。但是对于多个 LISTAGG() 函数,它的重复值。
我没有办法做到这一点。有没有其他方法可以获得不同的值?
【问题讨论】: