none
Ayuda en secuencia de números RRS feed

  • Pregunta

  • Buen día tengo esta tabla en mi base de datos con una secuencia de números en la columna No_ord

    Id_fact Control No_ord
    11 555 1
    12 555 2
    13 555 3
    14 555 4
    15 555 5
    16 555 6

    Si yo elimino los registros 13 y 15 quedaría asi

    
    Id_fact Control No_ord
    11 555 1
    12 555 2
    14 555 4
    16 555 6

    Qué consulta o que procedimiento puedo hacer para que los datos de la columna  No_ord queden ordenados de la siguiente forma:

    Id_fact Control No_ord
    11 555 1
    12 555 2
    14 555 3
    16 555 4

    Por su apoyo muchas gracias.

    jueves, 14 de marzo de 2019 15:13

Todas las respuestas

  •  

    Hola  AriamGT

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te recomiendo ingresar al siguiente enlace donde puedes encontrar una posible solución para tu problema.

    https://docs.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-2017

    https://docs.microsoft.com/en-us/windows/desktop/search/-search-sql-orderby

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 14 de marzo de 2019 15:51
  • Hola AriamGT:

    Para esto puedes usar la función Sql Row_number

    create table ordenados (id_fact int, Control int, no_ord int)
    go
    insert into ordenados (id_fact, Control, no_ord)
    values
    (11,555,1),
    (12,555,2),
    (13,555,3),
    (14,555,4),
    (15,555,5),
    (16,555,6);
    go
    delete from ordenados where id_fact in (13,15)
    go
    select * from ordenados
    go

    Hasta aquí la recreación de tu escenario.

    Solución.

    ;With c as 
    (
    	select id_fact,
    			control,
    			ROW_NUMBER() over(order by id_fact) as Num
    			from ordenados
    
    )
    update o set no_ord = c.num
    	from ordenados o join c on o.id_fact = c.id_fact;
    

    Salida:

    https://javifer2.blogspot.com/2019/01/numerar-filas-funciones-de-ventana.html

    jueves, 14 de marzo de 2019 18:14
  • Hola:

    Prueba la siguiente consulta

    select a1.id, a1.control, rank=count(*)
       from prueba a1, prueba a2
       where a1.id + a1.control >= a2.id + a2.control
       group by a1.id, a1.control
       order by 1

    P.D.

    La tabla se llama prueba

    Un saludo desde Bilbo

    Carlos


    jueves, 14 de marzo de 2019 18:28