PREGUNTA SOBRE GROUP BY

15/09/2007 - 03:19 por jcpc91 | Informe spam
hola grupo
espero me puedan ayudar tengo que diseñar un reporte con cristalreport
a partir de la tabla presente abajo en la cual debo hacer el gráfico
pero necesito agrupar los meses para formar trimestres es decir del
mes 1 al 3 sería el primer trimestre, el segundo trimestre sería 4 al
6 y asi hasta los cuarto trimestre y está agrupación lo kiero hacer en
un procedimiento almacenado para que le pueda decir por medio de una
sentencia de sql a sqlserver que me agrupe los registros por trimestre
es deicer del mes 1 al 3 los agrupe y los cuente espero me este
explicando y lo entiendan

id tipo ano
mes dia
10 ASESORÍA 2007 1 11
10 ASESORÍA 2007 1 11
10 ASESORÍA 2007 2 11
10 ASESORÍA 2007 3 11
10 ASESORÍA 2007 2 10
10 ASESORÍA 2007 3 13
10 ASESORÍA 2007 3 13
10 ASESORÍA 2007 4 12
10 ASESORÍA 2007 5 12
10 ASESORÍA 2007 4 12
10 ASESORÍA 2007 5 12

el resultado que kisiera es algo así des pues de agrupar y contar con
la funcipon sql COUNT() AS CUENTA
y agrupando los registros por trimestre (1-3) del de la columna mes

id tipo ano dia
CUENTA
10 ASESORÍA 2007 11 7

si observan en este ejemplo conto y agrupó todos los registros que
tubieran 1,2 y 3 y los contó
espero le entiendan
gracias por sus respuestas
 

Leer las respuestas

#1 Alejandro Mesa
15/09/2007 - 04:52 | Informe spam
Trata:

select
ano,
(mes / 3) + 1 as trimestre,
count(*)
from
@t
group by
ano,
(mes / 3) + 1
order by
ano,
trimestre
go

Tambien puedes usar la expresion "case".

select
ano,
case when mes between 1 and 3 then 1
case when mes between 4 and 6 then 2
case when mes between 7 and 9 then 3
else 4
end as trimestre,
count(*)
from
@t
group by
ano,
case when mes between 1 and 3 then 1
case when mes between 4 and 6 then 2
case when mes between 7 and 9 then 3
else 4
end
order by
ano,
trimestre
go


AMB

"" wrote:

hola grupo
espero me puedan ayudar tengo que diseñar un reporte con cristalreport
a partir de la tabla presente abajo en la cual debo hacer el gráfico
pero necesito agrupar los meses para formar trimestres es decir del
mes 1 al 3 sería el primer trimestre, el segundo trimestre sería 4 al
6 y asi hasta los cuarto trimestre y está agrupación lo kiero hacer en
un procedimiento almacenado para que le pueda decir por medio de una
sentencia de sql a sqlserver que me agrupe los registros por trimestre
es deicer del mes 1 al 3 los agrupe y los cuente espero me este
explicando y lo entiendan

id tipo ano
mes dia
10 ASESORÍA 2007 1 11
10 ASESORÍA 2007 1 11
10 ASESORÍA 2007 2 11
10 ASESORÍA 2007 3 11
10 ASESORÍA 2007 2 10
10 ASESORÍA 2007 3 13
10 ASESORÍA 2007 3 13
10 ASESORÍA 2007 4 12
10 ASESORÍA 2007 5 12
10 ASESORÍA 2007 4 12
10 ASESORÍA 2007 5 12

el resultado que kisiera es algo así des pues de agrupar y contar con
la funcipon sql COUNT() AS CUENTA
y agrupando los registros por trimestre (1-3) del de la columna mes

id tipo ano dia
CUENTA
10 ASESORÍA 2007 11 7

si observan en este ejemplo conto y agrupó todos los registros que
tubieran 1,2 y 3 y los contó
espero le entiendan
gracias por sus respuestas


Preguntas similares