Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
adriansalas
Contributor III
Contributor III

Crear ID Unicos

Hola estoy buscando como enumerar un campo para crear un id único.

pero me gustaría tenerlo de la sig forma:

Campo       idUnico

ab5687     ab5687-1

ab5687     ab5687-2

ab5687     ab5687-3

cx0152     cx0152-1

cx0152     cx0152-2

cx0152     cx0152-3


como puedo agregar el consecutivo y que inicie de nuevo en 1?


Saludos

1 Solution

Accepted Solutions
rodri_morales
Creator II
Creator II

Pensando bien, hay un error.

La parte de ordenar la tabla es correcta. Para el resto deberías controlar la variable y solamente hacer la unión para el campo. Porque sino la variable siempre va a crecer y no va a volver a 1 nunca.

Quedaría algo así:

LET vVariable = 1;

FOR i = CantFilas - 1

     IF Campo=Before(Campo) Then

          vVariable = vVariable+1

     ELSE

          vVariable=1

     END IF

   

     LOAD   

          Campo&'-'&vVariable     as idUnico;

     Resident Tabla1

NEXT

Esa debería ser la forma correcta. Revisando lo que comenté, noté un problema de lógica.

Espero que te sirva y puedas solucionar el problema, sino, estamos para ayudar,

Saludos!

View solution in original post

2 Replies
rodri_morales
Creator II
Creator II

Hola!

Para crear id únicos, podes usar la función AutoNumber().

Una forma de hacer lo que pretendes es con un ciclo for. Tenés que ordenar los datos en primer lugar (aplicas "Order By" a la tabla), luego creas una variable que sea igual a 1. En una nueva tabla, tomando los datos de la primera (usando "Resident Tabla1") controlas el valor de "Campo" con el "Campo" anterior (con la función Before()), si son iguales le asignas el valor "Campo&'-'&vVariable+1". Esta comparación la haces dentro de un if.

if(Campo=Before(Campo), "Campo&'-'&vVariable+1", "Campo&'-'&vVariable")

Espero que te sirva,

Saludos!

rodri_morales
Creator II
Creator II

Pensando bien, hay un error.

La parte de ordenar la tabla es correcta. Para el resto deberías controlar la variable y solamente hacer la unión para el campo. Porque sino la variable siempre va a crecer y no va a volver a 1 nunca.

Quedaría algo así:

LET vVariable = 1;

FOR i = CantFilas - 1

     IF Campo=Before(Campo) Then

          vVariable = vVariable+1

     ELSE

          vVariable=1

     END IF

   

     LOAD   

          Campo&'-'&vVariable     as idUnico;

     Resident Tabla1

NEXT

Esa debería ser la forma correcta. Revisando lo que comenté, noté un problema de lógica.

Espero que te sirva y puedas solucionar el problema, sino, estamos para ayudar,

Saludos!