create table #t
(
pkid int
)
insert #t select 1
insert #t select 1
insert #t select 2
insert #t select 3
insert #t select 3
insert #t select 4我想得到的结果是,但不能用2005的排名函数,因为我的是2000 :-( 
1
1
3
4
4
6

解决方案 »

  1.   

    create table #t
    (
        pkid int
    )
    insert #t select 1
    insert #t select 1
    insert #t select 2
    insert #t select 3
    insert #t select 3
    insert #t select 4select pkid,
           rnk=(select count(*) from #t where pkid<t.pkid)+1
    from #t as tdrop table #t/*
    pkid        rnk
    ----------- -----------
    1           1
    1           1
    2           3
    3           4
    3           4
    4           6(6 row(s) affected)
    */
      

  2.   

    create table #t
    (
        pkid int
    )
    insert #t select 1
    insert #t select 1
    insert #t select 2
    insert #t select 3
    insert #t select 3
    insert #t select 4select pkid,
           rnk=(select count(distinct pkid) from #t where pkid<t.pkid)+1
    from #t as tdrop table #t/*
    pkid        rnk
    ----------- -----------
    1           1
    1           1
    2           2
    3           3
    3           3
    4           4(6 row(s) affected)
    */