Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2003
adfa adfa is offline
Miembro
 
Registrado: may 2003
Ubicación: Montevideo-Uruguay
Posts: 119
Poder: 21
adfa Va por buen camino
agrupar registros por año, mes, dia en query?

Hola a todos.
Estoy necesitando hacer la siguiente consulta sobre un archivo dbf con el tquery:
SELECT YEAR(mfecha) as anio, MONTH(mfecha) as mes, DAY(mfecha) as dia, mmoneda, magencia, mempresa,
sum(mimporte), sum(mcomision), sum(mtalones)
FROM C:\DBF\MENSUAL
GROUP BY anio, mes, dia, mmoneda, magencia, mempresa

En otros motores de base de datos si me funciona pero contra un dbf me da error de sintaxis.
Lo que necesito es agrupar por año, mes dia etc.
Si no se puede por sql , hay alguna otra forma de hacerlo.

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 06-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿No es lo mismo que agrupar por fecha?

¿Existen las funciones Year Month y Day en ese Sql?
Si es así, prueba esto:
Código:
SELECT YEAR(mfecha) as anio, MONTH(mfecha) as mes, DAY(mfecha) as dia, 
mmoneda, magencia, mempresa, 
sum(mimporte), sum(mcomision), sum(mtalones)
FROM C:\DBF\MENSUAL
GROUP BY YEAR(mfecha) , MONTH(mfecha), DAY(mfecha), mmoneda, magencia, mempresa
EDIT: quitar el scroll horizontal (lo siento delphi.com.ar)
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por __cadetill fecha: 03-10-2003 a las 19:34:50.
Responder Con Cita
  #3  
Antiguo 07-08-2003
adfa adfa is offline
Miembro
 
Registrado: may 2003
Ubicación: Montevideo-Uruguay
Posts: 119
Poder: 21
adfa Va por buen camino
Perdon el dia se me fue de mas.
En realidad tendria que poder agrupar por 2 cualquiera
por ej año-mes o mes-dia

Gracias.
Responder Con Cita
  #4  
Antiguo 07-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Pues es como te comenta delphi.com.ar pero quitando el que no quieras tanto de la sentencia Select como del Group By
Responder Con Cita
  #5  
Antiguo 03-10-2003
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Sobre tu sentencia sql,agupando por dias meses y años, te llegó a funcionar las funciones day(), month() y year(), por que yo estoy intentando usarlas en Interbase, pero no me deja. He conseguido instalar las udf's, pero no me dejan incluirlas en el group by, es decir:

SELECT count(*), mer_day(AV_FECHA)
FROM ALBARAN_vENTA
group by mer_day(av_fecha)

me da un error en la funcion mer_day, del group by.

Se os ocurre algo???
Gracias
Responder Con Cita
  #6  
Antiguo 04-10-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Me suena que es (en dbf y en interbase también funciona):

EXTRACT(YEAR FROM SaleDate) AS YearNo,
EXTRACT(MONTH FROM SaleDate) AS MonthNo,
EXTRACT(WEEK FROM SaleDate) AS WeekNo,
EXTRACT(DAYOFWEEK FROM SaleDate) AS WeekDayNo,
EXTRACT(DAYOFYEAR FROM SaleDate) AS YearDayNo,
EXTRACT(DAY FROM SaleDate) AS DayNo

No sé ha evolucionado la función sin el EXTRACT
Responder Con Cita
  #7  
Antiguo 06-10-2003
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Al parecer si que ha evolucionado, y te permite utilizar el Day, Month, year, etc, en lugar del extract. El problema que tengo yo, es que no me permite incluir esta serie de campos el el group by de mi consulta.
Sabeis a que se debe, y como solucionarlo?

Saludos dsd alicante
Responder Con Cita
  #8  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
acabo de probar esto en Firebird 1.5 RC6 y funciona correctamente. Con dbf no lo he probado

Código:
select extract(year from fechas)
from cabecera
group by extract(year from fechas)
Responder Con Cita
  #9  
Antiguo 06-10-2003
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
No entiendo, lo acabo de probar en Interbase 6.0, y me da una excepcion en el group by -> 'token unknow extract'

Código:
select extract(year from av_fecha)
from albaran_venta
group by extract(year from av_fecha)
Ya no se que pensar,

Gracias
Responder Con Cita
  #10  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Provado con Firebird 1.0.2 y tampoco funciona (será algo nuevo de la 1.5 ??)

De todas maneras, si no necesitas hacer agregados, puedes utilizar el distinct que, almenos con Firebird sí que funciona

Código:
select DISTINCT EXTRACT(year from fecha)
from PRUEBA
Otra alternativa sería pasarse a Firebird 1.5 RC6
Responder Con Cita
  #11  
Antiguo 06-10-2003
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
ESO SI QUE ME FUNCIONA, TANTO CON EL EXTRACT, COMO CON EL MONTH(), YEAR() Y DAY().
PERO NO ME DEJA INCLUIRLO EN EL GROUP BY...

ME TOCARÁ CREAR UN PROCEDIMIENTO ALMACENADO, PERO ME PARECE BASTANTE EXTRAÑO QUE INTERBASE 6.0, NO CONTEMPLE ESTO.

SEGUIRE INVESTIGANDO, MUCHAS GRACIAS
Responder Con Cita
  #12  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por mguixot
PERO NO ME DEJA INCLUIRLO EN EL GROUP BY...
Con el DISTINCT no necesitas hacer el GROUP BY y sólo te servirá para aquellas consultas, como te comentaba antes, en las que no hagas un sum, count,.....
Responder Con Cita
  #13  
Antiguo 06-10-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Hola a todos:

No sé si sirve ni si es válido "Group by 2" 2=2ª columna

La vez que tuve que hacer algo así creo que hice una vista con mes, dia y año y luego un select de la vista (lo digo así de memoria)
Responder Con Cita
  #14  
Antiguo 06-10-2003
mguixot mguixot is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
mguixot Va por buen camino
Nada, he probado casi todas las combinaciones. Al final me he decantado por crearme una vista, con esos campos de la fecha. Y realizar la consulta sobre ella.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:53:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi