【问题标题】:How to display employee names instead of employee id while keeping the ","如何在保留“,”的同时显示员工姓名而不是员工 ID
【发布时间】:2021-10-14 00:12:52
【问题描述】:

我有几个与员工和销售额总额相关的表格,我必须在这里按照以下说明进行操作:

公司希望查看所有订单的每个销售人员(推销员)的总销售额。假设某些在线订单不涉及任何销售人员。显示该员工的推销员全名和总销售额。 还包括所有订单的总销售额,无需推销员参与。 排除名字以 y 结尾的销售人员(如 Lily 或 Daisy)。 仅包括那些销售额超过 400 万美元的销售人员。 对结果进行排序,以便首先显示更大的销售额。 笔记;不要使用 LIKE 运算符。

我已经编写了一个查询语句,其中显示了员工 ID 而不是员工姓名,这是正确回答此查询问题所需要的。在这种情况下,推销员 id "," 是没有名字的推销员,例如。互联网上的销售因此没有具体的名称。我怎样才能让我保留“,”,而是显示员工的姓名而不是他们的 ID 这是声明:

SELECT NVL(to_char(o.salesman_id), ',') AS "Emp Name", RPAD(to_char(SUM(i.quantity * i.unit_price),'$999,999,999.99'), 16, ' ') AS "Total Sale"
FROM (orders o 
INNER JOIN order_items i ON i.order_id = o.order_id) 
GROUP BY o.salesman_id 
HAVING SUM(i.quantity * i.unit_price) > 4000000.00
ORDER BY 2 DESC;

这是查询的输出:

【问题讨论】:

    标签: sql database oracle


    【解决方案1】:

    对我来说看起来像是外部连接。

    我没有你的桌子,所以我将使用 Scott 的 emp 来说明它。

    SQL> select empno, ename from emp where deptno = 10;
    
         EMPNO ENAME
    ---------- ----------
          7782 CLARK
          7839 KING
          7934 MILLER
    

    我将使用那些 EMPNO 值而不是您的 62 和 64(如屏幕截图所示)。 your_query CTE 代表您当前拥有的输出。然后将其与包含员工姓名的表(在我的情况下为emp)外部连接,但将,留给未知员工:

    SQL> with
      2  your_query (emp_name, total_sale) as
      3    (select ','   , 100 from dual union all
      4     select '7782', 200 from dual union all
      5     select '7839', 300 from dual
      6    )
      7  select nvl(e.ename, q.emp_name) ename,
      8         q.total_sale
      9  from your_query q left join emp e on q.emp_name = to_char(e.empno);
    
    ENAME      TOTAL_SALE
    ---------- ----------
    CLARK             200
    KING              300
    ,                 100
    
    SQL>
    

    【讨论】:

    • 啊,谢谢,这就是解决方案。在我编辑我的语句之前,它只显示名称等,但从不显示,但是将表与员工姓名和他们的 ID 加入工作!
    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多