【发布时间】:2019-02-17 17:22:41
【问题描述】:
我不是 SQL 专家。我一直在谷歌上搜索如何在下面实现。 我需要根据 ID 对记录进行排序。 (先加前缀,后加数值)
Table: CUSTOMER_TRANS
| ID | Name | Date |
|==========|========|============|
|CP-091435 | Ola | 01-01-2010 |
|WM-183258 | Tor | 09-09-2001 |
|CP-109056 | Jess | 03-03-2003 |
SELECT * FROM CUSTOMER_TRANS ORDER BY substr(ID, 4) desc;
我需要先排序 2 前缀,例如 ES,然后是数值。 但是,我上面的 SQL 只返回数值最高的 WM-183258。 预期的结果是首先返回“CP”前缀和最高的数值,例如以下。希望有人能给我一些启示。
预期结果:
| ID | Name |
|==========|========|
|CP-109056 | Ola |
|CP-091435 | Jess |
|WM-183258 | Tor |
【问题讨论】:
-
所以你需要按前缀升序和数字降序排序,对吗?
-
如果我这样做,结果是 WM-183258 位于顶部。顶部的预期 ID 是 CP-109056(如第二张表所示)。 @菲尔
-
是的,对不起。我没有正确阅读你的问题。为了清楚起见,我更新了我的评论
-
是的,正确。我需要先将前缀排序为 asc,然后将数值排序为 desc。 @菲尔
-
天啊!!!非常感谢@Phil。你救了我的一天..谢谢。像魅力一样工作! :)
标签: sql oracle sorting oracle11g sql-order-by