有没有办法在Sybase ASE中重建dense_rank
函数?
所以我需要为每个元组提供一个唯一的数字(foo,bar)。
表:
+-----+-----+
| foo | bar |
+-----+-----+
| a | a |
| a | b |
| a | c |
| a | c |
| b | a |
| b | a |
+-----+-----+
结果:
+-----+-----+------+
| foo | bar | rank |
+-----+-----+------+
| a | a | 1 |
| a | b | 2 |
| a | c | 3 |
| a | c | 3 |
| b | a | 4 |
| b | a | 4 |
+-----+-----+------+
如果没有dense_rank
功能,我怎么能这样做?
非常感谢!
答案 0 :(得分:2)
以下子查询应提供相同的功能:
select t.*,
(select 1 + count(distinct foo + ':' + bar)
from table t2
where t2.foo < t.foo or
t2.foo = t.foo and t2.bar < t.bar
) as rank
from table t;