Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Selecionar y agrupar segun el Mes (https://www.clubdelphi.com/foros/showthread.php?t=11868)

Carlex 28-06-2004 20:42:23

Selecionar y agrupar segun el Mes
 
Muy buenas, mi consultita es estoy trabajando con varias tablas pero solo de 2 debo sacar la siguiente informacion, de la tabla factura se saca la fecha y de la tabla Tipo, el tipo de compra realizada, lo que requiero es que por cada mes cuente de cada tipo cuantas se vendieron, el query que estoy haceindo es algo asi:

SELECT T.S_Tipo, F.F_Fecha_V, COUNT(T.S_Tipo) AS Total
FROM T_Tipo AS T, T_Prenda AS P, T_Venta AS V, T_Factura AS F
WHERE T.Cod_Tipo=P.Cod_Tipo And P.S_Modelo=V.S_Modelo And V.N_Cod_Venta=F.N_Cod_Venta
GROUP BY F.F_Fecha_V, T.S_Tipo;

Que me da como resultado los totales por tipo de lada dia, pero requiero que me de por mes, lo optimo seria un resultado separado por mes, asi: Enero: Tipo1=13, Tipo2=2, Tipo3=5; Febrero.....etc

Como puedo lograr esto? o solo se puede agrupar por mes, segun el campo de fecha?, esto me seria de gran ayuda para otro query que debe ser por dia de la semana tambien, muchas gracias

delphi.com.ar 28-06-2004 20:57:58

Sería bueno saber en que motor quieres ejecutar esta consulta, por ejemplo en Oracle, puedes agrupar por:
Código SQL [-]
SELECT COUNT(*), TO_CHAR(FECHA, 'MM')
FROM TABLA
GROUP BY TO_CHAR(FECHA, 'MM')

En otros motores existen funciones como Month para poder extraer el mes de una fecha.

Saludos!

Carlex 29-06-2004 01:56:41

Agrupar por mes
 
Hola, gracias por la respuesta me ayudo bastante pero aqui la duda, ya lo tengo agrupado por mes, pero en los resultados como puedo obtener a que mes pertenecen estos resultados?, esto puedo hacerlo en el query o dentro de mi aplicacion? Gracias

ruina 29-06-2004 12:49:45

supongo que podrias usar la clausula Having:

Código SQL [-]
SELECT COUNT(*), TO_CHAR(FECHA, 'MM')
FROM TABLA
GROUP BY TO_CHAR(FECHA, 'MM')
HAVING TO_CHAR(FECHA, 'MM') = '12'

delphi.com.ar 29-06-2004 15:28:22

Cita:

Empezado por Carlex
pero en los resultados como puedo obtener a que mes pertenecen estos resultados?

No entiendo a que quieres llegar, pero estas agrupando por mes, y cada registro pertenece al total de cada mes, el segundo campo indica al mes de referencia

Cita:

Empezado por Carlex
esto puedo hacerlo en el query o dentro de mi aplicacion? Gracias

Si

Cita:

Empezado por ruina
supongo que podrias usar la clausula Having

Me parece medio un exeso utilizar un having para eso, el having lo utilizaría solo para las funciones de grupo, en este caso, el resultado es el mismo que:

Código SQL [-]
SELECT COUNT(*), TO_CHAR(FECHA, 'MM')
FROM TABLA
WHERE TO_CHAR(FECHA, 'MM') = '12'

Saludos!

marcost 08-07-2004 16:54:49

Código:

SELECT T.S_Tipo, datepart (month, F.F_Fecha_V), COUNT(*) AS Total
FROM T_Tipo AS T 
JOIN T_Prenda AS P ON P.Cod_Tipo=T.Cod_Tipo
JOIN T_Venta AS V ON V.S_Modelo=P.S_Modelo
JOIN T_Factura AS F on F.N_Cod_Venta=V.N_Cod_Venta
GROUP BY datepart (month, F.F_Fecha_V), T.S_Tipo;

esto deberia funcionar en SQL Server, como decia delphi.com.ar, deberias decirnos que motor estás usando para que tengamos una respuesta mas precisa

Suerte

Carlex 09-07-2004 05:03:10

Agrupar segun Mes
 
Bueno priemro que nada muchas gracias por las respuestas, recien pude verlas y las probare, el motor que estoy usando es access y con la 1ra respuesta resolvi casi el problema salvo que no obtenia el resultado de a cuerdo al mes, es decir, que obtenia:

Prenda2 5
Prenda1 1
Prenda4 6
Prenda2 2

Pero no el mes al que corresponden, alli la pregunta de como puedo a este resultado agregar el mes al que corresponde. asi obtener

Prenda2 5 Mayo
Prenda1 1 Mayo
Prenda4 6 Mayo
Prenda2 2 Junio, etc

Muchas gracias :)

marcost 10-07-2004 19:39:01

no se si access tenga la opcion de mostrarte el nombre del mes, pero una posible solución que es independiente del motor (y del idioma) es que añadas un campo calculado a la consulta

Suerte

Carlex 11-07-2004 20:48:39

Muchas gracias marcost, la unica variante en access es que en vez de month es "m", despues todo funciona bien. :)

delphi.com.ar 12-07-2004 15:45:35

Cita:

Empezado por marcost
..no se si access tenga la opcion de mostrarte el nombre del mes...

Si: FORMAT(Now(), "MMMM")

Saludos!


La franja horaria es GMT +2. Ahora son las 20:20:57.

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