SQL group by, completando valores intermedios sin registros

05/06/2006 - 18:44 por Manekurt | Informe spam
Hola a todos, necesito armar una sentencia que selecciona distintas filaes,
agrupadas por un determinado campo, y complete en el agrupado los valores
intermedios que no poseen un valor, voy con un ejemplo para ser mas claro.

TABLA EJEMPLO

COL_A, COL_B
25.50 1
62.50 2
125.00 4
55.00 2
100.00 1
80.00 7
60.00 9

Estos son los valores de ejemplo que pose la tabla, lo que necesito es
realizar la sumatoria de la COL_A, agrupados los resultados por COL_B, pero
con la siguiente excepcion. En caso de los resultados en los que no hay un
valor, teniendo que por ejemplo necesito resultados del 1 al 10, para el 3,
5, 6, 8, y 10 no hay valores ingrersados, en ese caso necesitaria que me
agregue un registro en 0.00.
El resultado del script seria el siguiente

125.50 1
117.50 2
0.00 3
125.00 4
0.00 5
0.00 6
80.00 7
0.00 8
60.00 9
0.00 10

si esto no es posible sin hacer un Stored Proc, no habria problema, les
pediria si alguien pudiera enviarme un ejemplo de como realizar esto,
gracias!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
05/06/2006 - 18:56 | Informe spam
Manekurt,

Una tabla de numeros te vendria perfecta para lo que quieres.

select identity(int, 1, 1) as numero
into dbo.numero
from sysobjects as a cross join sysobjects as b
go

select a.numero, sum(isnull(b.cal_a, 0)) as sum_col_a
from dbo.numero as a left join ejemplo as b
on a.numero = b.col_b
where a.numero between 1 and 10
group by a.numero
go

Why should I consider using an auxiliary numbers table?
http://www.aspfaq.com/show.asp?id%16


AMB

"Manekurt" wrote:

Mostrar la cita
#2 qwalgrande
05/06/2006 - 19:24 | Informe spam
Hola.

Una forma sería crear una tabla aparte con todos los valores que deben
aparecer y unirla a tu consulta de agrupados por un left join, sustituyendo
valores nulos por ceros:

select isnull(Grupo.Col_A,0.00) as Col_A, Ref.Col_B
from Ref left join (aquí, tu consulta con group by) as Grupo
on Ref.Col_B = Grupo.Col_B

No sé si me he explicado, si es así, me comentas.

Alberto López Grande (qwalgrande)


"Manekurt" escribió en el mensaje
news:OPV$
Mostrar la cita
#3 Manekurt
07/06/2006 - 20:03 | Informe spam
Muchas gracias alejandro, excelente tu ayuda, saludos


"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida