在对SQL进行排名时,如何添加与前一行相比的额外规则



假设我有一个表,显示了客户支持票证的更改。

状态密集排名>行编号23(随机(打开[/tr>
时间戳 日期排名
2021-03-22 05:03:22 打开 1 1
2021-03-24 07:10:05 2021-03-24 减速2
2021-04-04 09:01:10 2021-04-24 减速 3
2021-04-04 09:01:10 2021-04-2434(随机(

假设您希望此序列覆盖整个表,我们可以尝试:

SELECT *, ROW_NUMBER() OVER (ORDER BY timestamp,
CASE status WHEN 'OPEN' THEN 1 ELSE 2 END) AS rn
FROM yourTable
ORDER BY timestamp, CASE status WHEN 'OPEN' THEN 1 ELSE 2 END;

ORDER BY子句的第二级将打开的记录排序在任何其他状态的记录之前。如果您希望对表中给定的一组记录重复此序列,那么您需要在对ROW_NUMBER的调用中添加一个PARTITION BY子句。

最新更新