假设我有一个表,显示了客户支持票证的更改。
时间戳 | 日期 | 状态排名 | 密集排名>行编号||
---|---|---|---|---|
2021-03-22 05:03:22 | 打开 | 1 | 1 | |
2021-03-24 07:10:05 | 2021-03-24 | 减速 | 22 | |
2021-04-04 09:01:10 | 2021-04-24 | 减速 | 3 | 3(随机(|
2021-04-04 09:01:10 | 2021-04-24 | 打开3 | 4(随机( | [/tr>
假设您希望此序列覆盖整个表,我们可以尝试:
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
子句。