FoxPro/Visual FoxPro - SELECT Y SUM

   
Vista:

SELECT Y SUM

Publicado por kong (681 intervenciones) el 02/07/2008 02:55:44
Buenas noches amigos.
Tengo un problema por resolver, y es el siguiente:
Tengo un ejemplo

1 manzana para Juan
3 peras para Daniel
2 manzanas para Daniel
1 pera para Juan
4 naranjas para Jose
2 naranjas para Daniel

Quiero resumir en una tabla, y que resulte lo siguiente

Frutas----Total------Juan----Daniel----Jose
manzanas--3---------1----------2----------0
peras--------4---------1----------3----------0
naranjas----6---------0----------2----------4

en mi programa tengo este select (claro que este select se refiere a otros datos):

SELECT cod_plato, nom_plato, SUM(cantidad) as cantidadPlato, ;
IIF(nummesa=0 ,cantidad ,0) as cantidadLlevar, ;
IIF(BETWEEN(nummesa,1,20),cantidad,0) as cantidadMesa, ;
IIF(nummesa=55,cantidad,0) as cantidadDomicilio FROM tabPedidoLista ;
WHERE cobrado<>2 GROUP BY cod_plato,nom_plato, cantidadllevar, ;
cantidadMesa,cantidadDomicilio ORDER BY cod_plato ASC ;
INTO CURSOR curEstadisticaHoy1 READWRITE

pero me da unos resultados no deseados.

Espero que me puedan ayudar, les agradezco de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SELECT Y SUM

Publicado por Ernesto Hernandez (4632 intervenciones) el 02/07/2008 05:16:51
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=117&allpages=1&theme=Printer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT Y SUM

Publicado por kong (681 intervenciones) el 02/07/2008 19:21:27
hola hernesto, lo que pasa es que el articulo ese, me da mas vueltas a la cabeza.... mandate un ejemplito, porfa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

SELECT Y SUM

Publicado por Mauricio (1368 intervenciones) el 02/07/2008 06:56:14
Kong, ya te envie algo a tu e-mail, espero te sirva!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT Y SUM

Publicado por kong (681 intervenciones) el 02/07/2008 19:18:47
muchas gracias mi amigo...
pero el resultado no es el que esperaba.

tengo la tabla origen con 3 columnas

cantidad----fruta----destinatario
1 ----------manzana ----Juan
3 ----------peras -------- Daniel
2 --------manzanas ----Daniel
1 -----------peras --------Juan
4 ---------naranjas ----- Jose
2 ---------naranjas----- Daniel
....................
y quiero llegar a un cursor con 5 columnas asi:

Frutas----Total------Juan----Daniel----Jose
manzanas--3---------1----------2----------0
peras--------4---------1----------3----------0
naranjas----6---------0----------2----------4


.....................................
Mi amigo....Echale mas leña.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT Y SUM

Publicado por kong (681 intervenciones) el 02/07/2008 20:07:56
gracias amigos.....LA BATALLA HA TERMINADO....y gané

Asi es como lo conseguí:

SELECT cod_plato,nom_plato,SUM(cantidad) as cantidadPlato,;
INT(F_SUMARLLEVAR(1,cod_plato)) as cantidadMesa,;
INT(F_SUMARLLEVAR(0,cod_plato)) as cantidadLlevar,;
INT(F_SUMARLLEVAR(55,cod_plato)) as cantidadDomicilio ;
FROM tabPedidoLista '
GROUP BY cod_plato,nom_plato,cantidadMesa,cantidadLlevar,cantidadDomicilio ;
ORDER BY cod_plato INTO CURSOR curEstadisticaHoy1 READWRITE

.......................
y una funcion
.......................
FUNCTION F_SUMARLLEVAR
PARAMETERS nsnummesa,nscod_plato
DO CASE
CASE nsnummesa=0
-----SUM cantidad FOR nummesa=0 AND ALLTRIM(cod_plato)=ALLTRIM;
-------------(nscod_plato) TO nscuenta
CASE nsnummesa=1
-----SUM cantidad FOR BETWEEN(nummesa,1,20) AND ALLTRIM(cod_plato);
-------------=ALLTRIM(nscod_plato) TO nscuenta
CASE nsnummesa=55
-----SUM cantidad FOR nummesa=55 AND ALLTRIM(cod_plato)=ALLTRIM;
--------------(nscod_plato) TO nscuenta
*OTHERWISE
*nscuenta=0
ENDCASE
RETURN nscuenta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar