Oracle数据库concat列

时间:2017-07-13 14:47:54

标签: database oracle concat

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

2 个答案:

答案 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
);