Oracle Database 12c企业版12.1.0.2.0版 有人可以帮我查询Oracle
**TABLE A** **TABLE B** **TABLE usuarios**
RU RU DESCRIP iduser
================== ==================== =======================
| adm | | adm | hi | | 1 |
| adm | | adm | help | | 1 |
| adm | | adm | me | | 1 |
| usr | | urs | good day | | 1 |
| rhm | | rhm | s | | 1 |
表usuario 是参考>> 表A 和表A 参考>> 表B
这是我的查询和 结果是
adm = hi,hi,hi
SELECT case row_number()
over (partition by A.ru by B.descrip) WHEN 1
THEN A.RU
END as RU,
LISTAGG(B.descrip, ', ')
WITHIN GROUP (ORDER BY A.RU) "names"
FROM A
INNER JOIN usuarios on usuarios.iduser = A.iduser
LEFT JOIN B ON B.RU = A.RU
WHERE A.iduser = 1
GROUP BY A.RU, B.descrip
ORDER BY A.RU, B.descrip
我需要这个结果
RESULT
adm = hi help me
usr = good day
rhm = s
答案 0 :(得分:0)
这是我的新查询
SELECT A.RU,
LISTAGG(B.descrip, ',') WITHIN GROUP (ORDER BY B.descrip)
over (partition by A.RU) B
FROM A
inner join usuarios on usuarios.iduser = A.RU
left join B on B.RU = A.RU
where A.iduser = 1
GROUP BY A.RU, B.descrip
order by A.RU, B.descrip;
table result
=================
RU descrip
=================
adm hi help me
adm hi help me
adm hi help me
usr good day
rhm s
我只需要
adm hi help me
usr good day
rhm s
答案 1 :(得分:0)
CORRECT QUERY:
select distinc * from (
SELECT A.RU,
LISTAGG(B.descrip, ',') WITHIN GROUP (ORDER BY B.descrip)
over (partition by A.RU) B
FROM A
inner join usuarios on usuarios.iduser = A.RU
left join B on B.RU = A.RU
where A.iduser = 1
GROUP BY A.RU, B.descrip
order by A.RU, B.descrip
);