如何解决按多列但不同的标准排序
我在 sql SERVER 中有一个表,我想从中选择使用 order by 的记录,但我遇到了不同的情况。请看下表。
EmployeeCode | EmployeeArea
001 | 8568
002 | 4549
004 | 4549
005 | 8568
003 | 4549
006 | 7777
010 | 4549
007 | 8568
008 | 7777
009 | 4549
如上所示,我有两个字段员工代码和员工区域。现在,我想要做的是先按员工代码排序记录,然后按员工区域排序,但不是以标准方式排序。请参阅下面所需的 o/p 以便更好地理解
EmployeeCode | EmployeeArea
001 | 8568
005 | 8568
007 | 8568
002 | 4549
003 | 4549
004 | 4549
009 | 4549
010 | 4549
006 | 7777
008 | 7777
如上所示,第一个排序是在employeeCode上,根据这个,第一个雇员(ex 001)的雇员区(8568)将所有区号为01的雇员放在一起,并按雇员代码按升序排列。 我厌倦了使用 group by、CTE、临时表等多种方式,但无法获得所需的输出。任何帮助将不胜感激。
解决方法
似乎您需要的是 MIN
中的窗口化 ORDER BY
:
SELECT *
FROM (VALUES('001',8568),('002',4549),('004',('005',('003',('006',7777),('010',('007',('008',('009',4549))V(EmployeeCode,EmployeeArea)
ORDER BY MIN(EmployeeCode) OVER (PARTITION BY EmployeeArea),EmployeeCode,EmployeeArea;
,
如果我理解你,你只需要按两列排序:
SELECT EmplyeeCode,EmplyeeArea
FROM yourTable
ORDER BY EmplyeeArea,EmplyeeCode
这里我在 DB<>FIDDLE 上创建了演示。输出如您所愿。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。