【问题标题】:How to order rows EXACTLY like the image given?如何完全按照给定的图像排序行?
【发布时间】:2019-05-21 13:38:41
【问题描述】:

所以我得到了一张图片,你必须通过 SQL 从你的表中创建一个输出。我设法用分配的经理姓名显示员工姓名,但姓名的顺序与问题不匹配。

我在想 ORDER BY WHERE 可以用吗? 您认为这会有所帮助吗,因为我认为我的暗示可能不正确 https://sqlandme.com/2013/11/18/sql-server-custom-sorting-in-order-by-clause/

必填:

SELECT CONCAT(CONCAT(CONCAT(CONCAT(m.TITLEOFCOURTESY,' '),m.FIRSTNAME),' '),m.LASTNAME) AS "Manager Name",CONCAT(CONCAT(CONCAT(CONCAT(a.TITLEOFCOURTESY,' '),a.FIRSTNAME),' '),a.LASTNAME) AS "Employee Name"
FROM EMPLOYEES a
INNER JOIN EMPLOYEES m
ON a.REPORTSTO = m.EMPLOYEEID;

我的输出:

STEVEN 应该是第三,但他实际上是第二。

【问题讨论】:

  • 为什么?订单的逻辑是什么?
  • 如果没有看到EMPLOYEES 表中的数据,就无法猜测合适的排序方式是什么
  • 员工不按titleofcourtesy, firstname, lastname 的任何排列排序。所以排序顺序必须从 EMPLOYEES 的一些其他属性派生而来。薪水?雇用日期?唉,我们不能告诉你,因为我们看不到你的模式。你必须自己弄清楚。
  • 所需的顺序对我来说没有任何意义。
  • 您确定“必须如下所示”指令实际上包括排序 - 它不只是指定名称的格式吗? (当然,您通常应该对输出进行排序,但您必须知道要使用的标准。)

标签: sql oracle sql-order-by


【解决方案1】:

如果要按员工姓名排序,可以将 select 中的相同条件粘贴到 order by 子句中。

从预期输出来看,它似乎也是按薪水、部门或您在问题中未提及的其他列排序的。

【讨论】:

  • 不需要重复拼接;你可以order by "Employee Name"。图像中的输出显然不是按此排序的。
猜你喜欢
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 2021-08-13
  • 2015-02-14
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多