SQL循环索引

declare @tbl table(order_id varchar(20),dates datetime)

insert @tbl(order_id,dates)

select 'A','2014-1-1' union

select 'A','2014-2-1' union

select 'A','2014-2-2' union

select 'B','2014-1-1' union

select 'C','2014-1-1' union

select 'D','2014-1-1' union

select 'D','2014-1-2' union

select 'E','2014-12-1' union

select 'E','2014-12-2' union

select 'E','2014-12-3' 



declare @index int,@count int,@row int,@item_order varchar(20),@current_order varchar(20)



select identity(int,1,1) as id,order_id,dates,cast(0 as int) as row_index into #tbl from @tbl order by order_id,dates

select @index=1,@row=1,@count=@@rowcount



while @row<=@count

begin

    --首次循环

    if isnull(@item_order,'')=''

        select     @item_order=order_id from #tbl where id=@row

    --已经有做循环

    else

    begin

        select     @current_order=order_id from #tbl where id=@row

        if @current_order<>@item_order

        begin

            set @index=1

            set @item_order=@current_order

        end

    end

    --更新序列号

    update #tbl set row_index=@index where id=@row

    set @index=@index+1

    set @row=@row+1

end

select * from #tbl

drop table #tbl

 

你可能感兴趣的:(sql)