You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL隐藏重复员工姓名?现有查询能否实现该需求?

实现SQL查询结果中隐藏重复员工姓名的方案

完全可以实现这个需求,核心是利用窗口函数标记同一员工的行,只在第一行显示姓名,后续行留空。下面是适配你现有查询的修改方案:

修改后的SQL语句(以Oracle为例)

SELECT
    CASE 
        WHEN ROW_NUMBER() OVER (PARTITION BY XU.EMP_NAME ORDER BY XU.FUNCTION) = 1 
        THEN XU.EMP_NAME 
        ELSE '' 
    END AS EMP_NAME,
    XU.FUNCTION,
    XU.ROLE_ACCESS 
FROM
    XX_USERS XU LEFT JOIN 
    XX_USERS_ACCESS XUA ON XU.EMP_ID=XUA.EMP_ID 
WHERE
    NVL(XU.STATUS,'N')='Y'
ORDER BY 
    XU.EMP_NAME, XU.FUNCTION

逻辑说明

  • PARTITION BY XU.EMP_NAME:按员工姓名分组,把同一员工的所有行归为一组
  • ROW_NUMBER() OVER (...):给每组内的行按指定顺序(这里是XU.FUNCTION)编号,第一行编号为1
  • CASE判断:如果是组内第一行,显示员工姓名;否则显示空字符串,达到隐藏重复姓名的效果

其他数据库适配提示

  • 若使用MySQL 8.0+:将NVL替换为IFNULL,语法其余部分一致
  • 若使用SQL Server:将NVL替换为ISNULL,语法其余部分一致

内容的提问来源于stack exchange,提问作者Moch Yuwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:28:16