Agrupación

Hola experto, tengo un pequeño problemita,
quisiera saber cual es el código para hacer una agrupación, en foxpro,
mi tabla se llama pacientes
tiene varios campos pero el que me interesa es organización.
Solamente quiero que se agrupe por la organización
espero quede claro lo que pregunto, sino hágamelo saber.
De antemano gracias por la atención y el tiempo que me regalo.

1 Respuesta

Respuesta
1
la agrupacion se hace por medio de SQL con la clausula group by, y la condicion es que este ordenada por este campo, supongamos una tabla de clientes que ud desea salga agrupado por ciudades,
select nombre,ciudad group by ciudad order by ciudad into cursor xx
Con esto tendriamos un solo registro por cada cliente y por ciudad, a simple vista no nos sirve de mucho, pues para ello estan los calculos que nos piden los clientes, por ejemplo si deseo saber cuantos clientes tengo por cada ciudad seria asi
select ciudad,sum(1) as cantidad from clientes group by ciudad order by ciudad into cursor xx
Con esto tendríamos algo parecido a esto
Asunción 10
CDE 5
MADRID 3
Mexico 15
eSTO ES hablando a nivel de SQL, a nivel de reporte tambien puedes usar los grupos para que te los sume y los detalle, para ello en el sql solo le das order y el repor si va agrupar, algo asi
select nombre,ciudad from clientes order by ciudad into cursor xx
Y en el reporte, te vas a Informe - Agrupar Datos y le pones en expresion   xx.ciudad
Con ello el reporte ya te creara un encabezado para el grupo, no es si tu pregunta abarcaba también el reporte pero ya te lo contesto, si no tienes experiencia en reportes primero te recomiendo una lectura de algún curso y luego ves este tema.
Hola, muchas gracias por la respuesta, y por el agregado de los reportes,
pero fijece que probé el código, primero lo adapte a mis datos, y foxpro me mostró un mensaje que dice: "Falta una clausula necesaria en el comando", luego lo probé sin hacerle ningún modificado al código que escribió usted, y nada, el mismo mensaje, no se si es que hace falta un código antes de colocar ese o después, y también no entiendo la ultima parte de la linea de código que dice "into cursor xx", por favor explíquemelo.
Espero me siga ayudando.
Le agradezco mucho su tiempo, espero su respuesta
Lo siento amigo, olvide la clausula FROM, seria asi
select nombre,ciudad from clientes group by ciudad order by ciudad into cursor xx
Disculpa que no pruebo los códigos aquí, bueno con respecto a INTO CURSOR XX
es una clausula que le indica a fox el resultado o a donde enviara los resultados de la consulta, en este caso le puse INTO CURSOR XX, los cursores en fox son tablas temporales que desaparecen cuando lo cierras, pero se comportan como una tabla común y son creadas en la memoria o disco local te cada computador, la sentencia puede ir también así INTO TABLE clientes, esto ya creara una tabla física permanente en el disco como un archivo, en fin, es el archivo que creara fox para que luego tu puedas ver los resultados etc.
Hola, muchas gracias por la aclaración,
Pero no se que pasará, pero ahora me dice otro mensaje: "SQL: la clausula group by falta o no es valida".
yo pense que el problema era que no habia hecho, la condicion que usted me dijo, de que debia estar ordenado por este campo;
En el midify de la tabla coloque el campo por el que necesito agrupar, como indice; (claro no me acepta indice principal), lo coloco como indice normal.
prove sin ningun otro codigo, solo adapte el que usted me escribio y me salio el mensaje.
preve colocando un set order to (por el campo ) antes del codigo que usted medio, es decir: 
set order to cliente 
 select cliente,nombre from pacientes group by cliente order by cliente into cursor xx
pero siempre sale el mensaje de error
especifico:
"cliente" en la tabla significa la institución a la que el paciente pertenece
"nombre" el es nombre del paciente
"pacientes" es el nombre de la tabla
Ok espero siga ayudándome con este problema, espero no quitarle mucho de su tiempo.
Si no encuentra otro modo, mándeme un ejemplo a mi correo: (xxxxxx) 
muchas gracias por seguir ahí.
La condición de estar ordenado no se refiere a los indices, simplemente por la clausula ORDER BY que se crea en el sql, si no esta ordenado aun así debe funcionar sin errores, pero los resultados estarían erróneos, por que repetiría los grupos, si Juan perez aparece en los registros 110,111,112 y luego en el 1201,1202 aparecerá dos veces en el grupo con la sumatoria o el calculo que has usado individualmente, solo eso, la sintaxis que has puesto esta bien, no veo error allí, prueba achicando el sql, quítale el GROUP BY y solo dejalo con el ORDER BY, y así sucesivamente hasta encontrar el error.
Hola otra vez, gracias por haber respondido mi pregunta, la verdad no pude encontrar el error, hice lo que usted me dijo de ir reduciendo el código, pero solo me acepta si le quito el group by, si dejo el group by en cualquier parte de la linea, me vuelve a salir el mismo mensaje.
No se que será pero, para continuar con mi trabajo, mejor hice una normalización, y cree la tabla cliente para poder improvisar la agrupación.
Muchas gracias por haberme regalado un poco de tiempo.
Siga adelante.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas