none
Incrementar valor de celda RRS feed

  • Pregunta

  • Hola!

    Necesito numerar las recetas de una misma presentación, arrancando por 0(cero), en la tabla existen muchas presentaciones con distintas cantidad de recetas.

    Programe el siguiente cursor para tratar de numerarlas:

    --declare @contador int

    declare @contador int
    declare @total int
    declare @pres int
    set @contador = 0
    set @total = (select count(*) from recetas_adr)
    set @pres = (select top 1 id_presentacion from recetas_adr order by id_presentacion)
    
    declare cursor_recetas cursor for
    select distinct id_presentacion, numero_receta
    from recetas_adr
    
    declare @id_pres int
    declare @num_rec int
    
    open cursor_recetas
    
    fetch next from cursor_recetas
    into @id_pres, @num_rec
    
    
    WHILE (@@fetch_status = 0) and (@contador <= @total) 
    begin
    
    update recetas_adr
    set numero_receta = @contador + 1
    where @id_pres=@pres
    
    fetch next from cursor_recetas
    into @id_pres, @num_rec
    end
    
    close cursor_recetas
    deallocate cursor_recetas
    

    
    martes, 19 de febrero de 2013 15:34

Respuestas

Todas las respuestas

  • vista de la tabla con el campo "numero_receta" que es de tipo int y quiero que se numere desde 0 y se valla incrementando agrupado por id_presentacion

    id_presentacion    numero_receta   

    87452                      0

    87452                      1

    87452                      2

    87453                      0

    87453                      1

    87454                      0

    martes, 19 de febrero de 2013 15:52
  • Si lo necesitas por temas de presentación, podrías hacerlo con ROW_NUMBER fácilmente:

    SELECT *
    , ROW_NUMBER() OVER(PARTITION BY id_presentacion ORDER BY id_presentacion) - 1 AS numero_receta
    FROM tuTabla

    martes, 19 de febrero de 2013 15:59
  • Hola! Gracias por tu respuesta!!

    Necesito modificar la tabla, para luego seguir con un par de procedimientos que completarían un paquete Ssis.

    Desde ya muchas gracias

    martes, 19 de febrero de 2013 17:39