数据排序,该如何处理
数据排序
审批时间 单号 号码 状态
26 1 187 接单中
26 2 185 未结单
26 3 186 结单中
27 4 187 未结单
25 5 182 未结单
28 6 184 接单中
碰到一个sql排序的问题。我有这么一组数据。我需要得到得最终结果是:
审批时间 单号 号码 状态
25 5 182 未结单
26 1 187 接单中
27 4 187 未结单
26 3 186 结单中
26 2 185 未结单
28 6 184 接单中
先按照审批时间正序排序, 然后相同号码的放在一起、 再然后是接单中的排在前面,怎么排呢。求解。
------解决思路----------------------
审批时间 单号 号码 状态
26 1 187 接单中
26 2 185 未结单
26 3 186 结单中
27 4 187 未结单
25 5 182 未结单
28 6 184 接单中
碰到一个sql排序的问题。我有这么一组数据。我需要得到得最终结果是:
审批时间 单号 号码 状态
25 5 182 未结单
26 1 187 接单中
27 4 187 未结单
26 3 186 结单中
26 2 185 未结单
28 6 184 接单中
先按照审批时间正序排序, 然后相同号码的放在一起、 再然后是接单中的排在前面,怎么排呢。求解。
------解决思路----------------------
WITH
/* 测试数据
table1(审批时间,单号,号码,状态)AS(
SELECT 26,1,187,'接单中' UNION ALL
SELECT 26,2,185,'未结单' UNION ALL
SELECT 26,3,186,'结单中' UNION ALL
SELECT 27,4,187,'未结单' UNION ALL
SELECT 25,5,182,'未结单' UNION ALL
SELECT 28,6,184,'接单中'
),*/
a AS (
SELECT 号码,
MIN(审批时间) firstTime,
MIN(状态) state,
MIN(单号) firstNo
FROM table1
GROUP BY 号码
)
SELECT b.* -- 结果部分
,a.* -- 调试输出部分
FROM table1 b
JOIN a
ON b.号码 = a.号码
ORDER BY a.firstTime, a.state, a.firstNo, b.号码, b.状态
审批时间 单号 号码 状态 号码 firstTime state firstNo
----------- ----------- ----------- ------ ----------- ----------- ------ -----------
25 5 182 未结单 182 25 未结单 5
26 1 187 接单中 187 26 接单中 1
27 4 187 未结单 187 26 接单中 1
26 3 186 结单中 186 26 结单中 3
26 2 185 未结单 185 26 未结单 2
28 6 184 接单中 184 28 接单中 6