Page 1 of 1

ASort por dos columnas

PostPosted: Mon May 02, 2022 1:14 am
by jrestojeda
Hola a todos,
Necesito ordenar un array por dos columnas, pero en el orden necesito que ordene por la primera columna de manera ascendente y por la segunda de manera descente.
La primera columna es una cadena y la segunda un numero.
Alguien tiene una idea de como debo hacer para que ASort haga lo que necesito?
Desde ya muchas gracias.
Saludos,

Re: ASort por dos columnas

PostPosted: Mon May 02, 2022 3:28 am
by Ariel
Esteban,

ASort( aArray,,, {| x, y | x[ 1 ] < y[ 1 ] .and. x[ 2 ] > y[ 2 ] } )

1. tu primer orden alfa
2. tu segundo orden numerico

no lo probe pero deberia funcionar.

Saludos.

Re: ASort por dos columnas

PostPosted: Mon May 02, 2022 11:25 am
by jrestojeda
Buen día Ariel...
No funciona de ese modo.

Alguna otra sugerencia?

Desde ya muchas gracias.
Saludos,

Re: ASort por dos columnas

PostPosted: Mon May 02, 2022 12:48 pm
by jbrita
y esta forma

ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ] ) } )

saludos

Re: ASort por dos columnas

PostPosted: Mon May 02, 2022 2:14 pm
by jrestojeda
jbrita wrote:ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ] ) } )


Esta manera me ordena ambas columnas de manera descendente.
Yo necesito la primera columna ascendente y la segunda descendente.

Re: ASort por dos columnas

PostPosted: Mon May 02, 2022 5:07 pm
by jrestojeda
Finalmente me fucionó lo siguiente:

aDatos:=ASort( aDatos,,, {| x, y | If( x[ 1 ] == y[ 1 ], x[ 2 ] > y[ 2 ] , x[ 1 ] < y[ 1 ] ) } )

Muchas gracias por las respuestas.