Agrupar datos de una tabla por semana

1,883 views
Skip to first unread message

Julio Rossi

unread,
Nov 18, 2010, 1:30:41 PM11/18/10
to publice...@googlegroups.com
Tengo una tabla con datos de ventas de distintos meses y años.

La estructura es:
dt_emision d(8)
nu_importe n(12,2)

Necesito agrupar y ordenar estos datos por semana de acuerdo a la fecha (dt_emision) , es decir, los datos por ejemplo desde el {01-01-2009} al  {30-11-2010} agruparlos y ordenarlos en semanas.
He probado con la función WEEK pero me devuelve el 1 para la primera semana de cada año por lo que no puedo ordenarlos ya que se mezclan

¿Alguien tiene alguna función que haga esto o alguna idea?

Un saludo cordial y gracias desde ya.

Julio Rossi
VFP 9 - SP2
Windows 7 Enterprise 64 

Luis Maria Guayan

unread,
Nov 18, 2010, 1:28:34 PM11/18/10
to publice...@googlegroups.com
Quizás esto resuelva tu problema:

-- Número de semana --
http://www.portalfox.com/article.php?sid=1113


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

 

Julio Rossi

unread,
Nov 18, 2010, 2:00:20 PM11/18/10
to publice...@googlegroups.com
Gracias Luis Maria por el dato.
Vi la función que me indicas, pero lamentablemente creo que en este caso no me sirve, ya que para el 01-01-2009 y 01-01-2010 da 1 (lo que es lógico) pero para mi caso no me es útil, ya que tengo que presentar los datos agrupados por semana pero en orden cronologico, o sea:

Semana 1 de 2009    $ 1000.00
Semana 2 de 2009    $ 1100.00
Semana n de 2009    $  900.00
Semana 1 de 2010    $  800.00

Con la función week(fecha,2) obtengo bien la semana, pero no logro ordenar los datos separados de la semana 1 del 2009 de la semana 1 del 2010.

Seguiré intentando.
Otro gracias!

Julio Rossi

Hugo Germigniani - Profind

unread,
Nov 18, 2010, 2:04:06 PM11/18/10
to publice...@googlegroups.com

Y x q no hace una mezcla de lo de Luis Maria mas el año??

 

Semana 12010, después separas las cosas para mostrarlas como quieras, pero en los datos tienes 2 columnas por ejemplo.-

GeoSys Diseño de Software

unread,
Nov 18, 2010, 2:10:22 PM11/18/10
to publice...@googlegroups.com
Puedes esta función junto con la de Luis María, talves toda esta información te sirva ya que sabrás donde empieza o termina tu semana o sea si es de lunes a domingo o de domingo a lunes etc.

CDOW( ) (Función)

Valores devueltos
Character

Parámetros
dExpression
Especifica la fecha para la que CDOW( ) devuelve el día.
tExpression
Especifica la expresión de tipo DateTime para la que CDOW( ) devuelve el día.

Observaciones
CDOW( ) devuelve el nombre del día de la semana como una cadena en el formato de nombre apropiado.
Ejemplo
STORE {^1998-02-16} TO gdDate
CLEAR
? CDOW(gdDate)  && Displays Monday

Julio Rossi

unread,
Nov 18, 2010, 2:14:15 PM11/18/10
to publice...@googlegroups.com
Porque:

Para el 01/01/2010 tengo semana 52
Para el 31/12/2010 tengo semana 52
Para el 01/01/2011 tengo semana 52
Para el 02/01/2011 tengo semana 1

Si le agrego el año:
2010 52
2010 52
2011 52
2011  1

¿Como lo ordeno para que quede cronologicamente?

No esta fácil...
-- 
Julio Rossi
VFP 9 - SP2
Windows 7 64 

Hugo Germigniani - Profind

unread,
Nov 18, 2010, 2:19:09 PM11/18/10
to publice...@googlegroups.com

PROCEDURE Periodo

LPARAMETERS tdFecha AS Date

 

IF PARAMETERS() <> 1

    RETURN tdFecha = DATE()

ENDIF

 

RETURN INT(VAL(ALLTRIM(STR(YEAR(tdFecha))) + RIGHT("0" + LTRIM(STR(MONTH(tdFecha))), 2)))

Hugo Germigniani - Profind

unread,
Nov 18, 2010, 2:21:39 PM11/18/10
to publice...@googlegroups.com

Perdón, te mande cualquiera, entendí mes…no semanas….

Julio Rossi

unread,
Nov 18, 2010, 2:23:34 PM11/18/10
to publice...@googlegroups.com
jajaja si y yo ya estaba meta probarlo....

Gracias!!

Luis Maria Guayan

unread,
Nov 18, 2010, 2:27:34 PM11/18/10
to publice...@googlegroups.com
Lo que yo hago en ese caso, es añadir un campo mas a la consulta:

SELECT Semana(CampoFecha) AS Semana, ;
  YEAR(CampoFecha) AS Anio, ;
  SUM(CampoPrecio) AS Total ;
  GROUP BY Anio, Semana ;
  ORDER BY Anio, Semana

edgar suarez kummers

unread,
Nov 18, 2010, 4:41:44 PM11/18/10
to publice...@googlegroups.com
Indexar colocando primero el año, luego la semana, todo sobre una tabla nueva provisional. Si deseas puedes agregar un sitio geográfico a la indexación.


De: Julio Rossi <jro...@sys-ilt.com.ar>
Para: publice...@googlegroups.com
Enviado: jue,18 noviembre, 2010 14:00

Asunto: Re: [vfp] Agrupar datos de una tabla por semana

Julio Rossi

unread,
Nov 18, 2010, 6:33:09 PM11/18/10
to publice...@googlegroups.com
Voy a probar de esa forma. Creo que por ahi van los tiros...

Un saludo cordial

Julio Rossi

patricio arguello

unread,
Nov 19, 2010, 7:33:02 AM11/19/10
to publice...@googlegroups.com
Att Julio
 
y si probas este select,  
 
select   year(fecha) as anho, week(fecha,2) as semana, sum(monto) from mitabla ;
         group by 1,2 ;
         order by 1,2
 
( pd no tengo datos para probar, pero creo que va a funcionar, primero ordenamos por año y luego por semana )
 
Slds. Patricio
Reply all
Reply to author
Forward
0 new messages