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

 

posted @ 2015-01-06 15:43  --宁静以致远--  阅读(271)  评论(0编辑  收藏  举报