zoukankan      html  css  js  c++  java
  • 关于oracle函数listagg的使用说明

    做项目的过程中遇到过一个这样的需求,在“用户查询”前台加一个字段“用户角色”,要将用户的所有角色查询出来放到一个字段中,角色之间用“,”分隔。

    发现一个办法是使用Oracle的listagg方法。

    [sql] view plain copy
     
    1. WITH TMP AS  
    2.  (SELECT TU.USERNAME, TE.EMP_NAME, TE.EMP_DUTY_NAME, TR.ROLE_NAME  
    3.     FROM TS_USER       TU,  
    4.          TS_USER_ROLE  TUR,  
    5.          TS_ROLE       TR,  
    6.          TM_DEPARTMENT TD,  
    7.          TM_EMPLOYEE   TE  
    8.    WHERE TU.USER_ID = TUR.USER_ID  
    9.      AND TU.EMP_ID = TE.EMP_ID  
    10.      AND TUR.ROLE_ID = TR.ROLE_ID  
    11.      AND TU.DEPT_ID = TD.DEPT_ID  
    12.      AND TD.DEPT_CODE = '755Y'  
    13.    ORDER BY TU.USERNAME ASC)  
    14. SELECT USERNAME 用户名,  
    15.        EMP_NAME 员工姓名,  
    16.        EMP_DUTY_NAME 职位,  
    17.        LISTAGG(ROLE_NAME, ',') WITHIN GROUP(ORDER BY ROLE_NAME) 用户角色  
    18.   FROM TMP  
    19.  GROUP BY USERNAME, EMP_NAME, EMP_DUTY_NAME;  

    查询结果:

    ID 用户名 用户姓名 职位 角色
    1 162 162 保洁员 子系统管理员,调度用户
    2 195 195 运作司机 总部质量管理员,普通用户
    3 202 202 员工关系中级专员Ⅱ 地区质量管理员
    4 7310 ** 质检管理工程师 地区质量界定员
    5 124915 ** 调度经理 分点部用户
    6 592884 **浩 网络规划初级专员Ⅰ 分点部用户,地区质量界定员,地区质量管理员,普通用户
  • 相关阅读:
    Java输入输出流详解2
    Java输入输出流详解(转)
    java泛型
    E-R图学习笔记
    MongoDB工具
    MongoDB安装
    mongodb-参考其他
    mongodb学习笔记
    WebService学习笔记
    nutch笔记
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/8074635.html
Copyright © 2011-2022 走看看