替代sybase ASE中的dense_rank

时间:2014-10-20 10:41:29

标签: sql sybase sybase-ase dense-rank

有没有办法在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功能,我怎么能这样做?

非常感谢!

1 个答案:

答案 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;