¿Cómo puedo realizar una busqueda en una base de datos con los valores mas altos?

Hola expertos, mi consuilta es la sig.
Tengo una tabla y dentro hay entre otros campos 10 específicos en los cuales guardo 10 valores 1 por cada campo, como puedo hacer para buscar los cinco mayores y almacenarlos en una nueva tabla gracias marcelo

1 Respuesta

Respuesta
1
Antes que nada, debes tener definida la tabla de la siguiente forma (por ejemplo):
TABLA1.DBF && TABLA ORIGEN
CODIGO N(5)
NOMBRE C(50)
CAMPO01 N(10,2)
CAMPO02 N(10,2)
CAMPO03 N(10,2)
CAMPO04 N(10,2)
CAMPO05 N(10,2)
CAMPO06 N(10,2)
CAMPO07 N(10,2)
CAMPO08 N(10,2)
CAMPO09 N(10,2)
CAMPO10 N(10,2)
ETC. ETC.
TABLA2.DBF && TABLA DESTINO
CODIGO N(5)
NOMBRE C(50)
CAMPO01 N(10,2)
CAMPO02 N(10,2)
CAMPO03 N(10,2)
CAMPO04 N(10,2)
CAMPO05 N(10,2)
Luego debes escribir el siguiente código para obtener los 5 más grandes
SELECT TABLA
scatter memvar
Declare vecmax(5) && defino un arreglo de 5 posiciones donde almaceno los valores más grandes.
VECMAX=0
FOR i=1 TO 10
** TOMO EL VALOR DE CADA CAMPO
NOMBRE_CAMPO='CAMPO'+IIF(I<10,'0'+ALLTRIM(STR(I)),ALLTRIM(STR(I)))
VALOR=&NOMBRE_CAMPO
** BUSCO LA POSICION DEL MAS PEQUEÑO ENTRE LOS CINCO VALORES
MAS_CHICO=1
FOR J=1 TO 5
IF VECMAX(J)<VECMAX(MAS_CHICO)
MAS_CHICO=J
ENDIF
ENDFOR
** Reemplazo el valor del más pequeño por el valor del campo
if valor>vecmax(mas_chico)
VECMAX(MAS_CHICO)=VALOR
Endif
Endfor
Release vecmax
SELECT TABLA2
APPEND BLANK
Gather memvar
REPLACE CAMPO01 WITH VECMAX(1)
REPLACE CAMPO02 WITH VECMAX(2)
REPLACE CAMPO03 WITH VECMAX(3)
REPLACE CAMPO04 WITH VECMAX(4)
REPLACE CAMPO05 WITH VECMAX(5)
Un saludo
Fernando Alvarez
La Pampa - Argentina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas