Insertar un numero consecutivo en una campo ordenado por otro campo en sql 2012

publicado por: Anonymous

Buenas tardes colega ten la siguiente caso a ver si me ayudan a resolver resulta que estoy trabajando en sql server 2012.

Quiero que inserte un número consecutivo en un campo x de acuerdo a un orden determinado ejemplo:

introducir la descripción de la imagen aquí

Este es mi código

DECLARE @id AS INT    
SELECT  @id =ROW_NUMBER() OVER(ORDER BY a.COD_ART) , a.COD_ART FROM ARTFISIC AS a GROUP BY A.COD_ART ORDER BY a.COD_ART asc

UPDATE ARTFISIC
SET
MARCA_MARB='X',
    [email protected],
    CONTEO01='0',
     CONTEO02='0',
      CONTEO03='0',
      CONTEOCERO='0',
      DIFERENCIA='0',
      EXIST_CONT='0',
      ENT_RETRO='0',
      SAL_RETRO='0',
    EXIST_FISI='0',
    FIS_VS_TEO='0'

Me marca el siguiente error:

Una instrucción SELECT que asigna un valor a una variable no debe
combinarse con operaciones de recuperación de datos.

introducir la descripción de la imagen aquí

Espero de su acostumbrada ayuda de antemano le agradezco

Dios le bendiga

solución

Para lo que, tenes que crear una tabla temporal con los datos ordenados primero, para poder numerarlos.

Select ROW_NUMBER() OVER(ORDER BY a.COD_ART ASC) as Numero, a.COD_ART
into #TablaTemporal
FROM ARTFISIC AS a

Esta tabla, te va a poner un numero delante de cada articulo

Luego, con esta tabla, podemos hacer un update de la otra tabla, igualando el campo Marbete a Numero

UPDATE ARTFISIC set a.Marbete = b.numero
From ARTFISIC as a inner join 
#TablaTemporal as b on a.COD_ART = b.COD_ART

Recuerda dropear la tabla temporal una vez que hayas terminado (aunque la misma deberia desaparecer una vez que te desconectes).

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *