¿Cómo agrupar y sumar datos mediante una consulta?

Agradeceré tengan la amabilidad de poder ayudarme en este caso, ya vengo tratando de buscarle una solución pero aun no logro solucionarlo:

Bien lo que sucede es que tengo una consultacuyos registros están de este modo:
producto cantidad cantidad_a_usar (títulos de columnas)
Producto1 10 5
Producto2 05 5
Producto3 20 10
Producto1 10 5
Producto3 10 2

El caso es que deseo saber com puedo hacer para que la misma consulta agrupe los registros y haga la sumatoria para que quede un resumen algo así:
Producto cantidad cantidad a usar saldo (titulo de columnas)
Producto1 20 15 5

Producto2 05 05 0

Producto3 30 12 18
Uso access 2007. Gracias por el apoyo

En SQL seria algo así (ya con todos los campos)

SELECT [Matriz Kardex].Plotter, [Matriz Kardex].Formato, IIf([Plotter]=1 And [Formato]=3,70,IIf([Plotter]=1 And [Formato]=4,120,IIf([Plotter]=1 And [Formato]=2,100,IIf([Plotter]=2 And [Formato]=3,45,IIf([Plotter]=2 And [Formato]=4,70,IIf([Plotter]=2 And [Formato]=2,100,IIf([Plotter]=3 And [Formato]=3,1,0))))))) AS [Rendimiento por Plotter], Sum([Matriz Uso].[Cantidad Asignada]) AS [SumaDeCantidad Asignada], Sum([Rendimiento por Plotter]*[Cantidad Asignada]) AS [Rendimiento por Cantidad], Sum([Matriz Kardex].[Cantidad a Imprimir]) AS [SumaDeCantidad a Imprimir], Sum([Rendimiento por Cantidad]-[Cantidad a Imprimir]) AS [Saldo en Impresiones] FROM (TablaPlotters INNER JOIN [Matriz Uso] ON TablaPlotters.Id = [Matriz Uso].[Marca y Modelo]) INNER JOIN [Matriz Kardex] ON TablaPlotters.Id = [Matriz Kardex].Plotter GROUP BY [Matriz Kardex].Plotter, [Matriz Kardex].Formato, IIf([Plotter]=1 And [Formato]=3,70,IIf([Plotter]=1 And [Formato]=4,120,IIf([Plotter]=1 And [Formato]=2,100,IIf([Plotter]=2 And [Formato]=3,45,IIf([Plotter]=2 And [Formato]=4,70,IIf([Plotter]=2 And [Formato]=2,100,IIf([Plotter]=3 And [Formato]=3,1,0)))))));

El caso es que he tratado con: GROUP BY y Sum pero no logro el resultado esperado... Es mas me arroja un erro como que me faltara la expresión rendimiento por cantidad - cantidad a imprimir... En otros casos (ya la verdad no se como) pero sucede ya no me arroja este error pero en lugar de sumar los campos deseados los multiplica por dos?

Espero que me puedan ayudar y espero haber sido claro en mi consulta... Pues la verdad hasta a mi me marea todo esto.

2 respuestas

Respuesta
1

No me he leído tu consulta, pero si interpreto bien lo que quieres sería algo como:

SELECT

Producto, SUM(Cantidad), SUM([Cantidad a usar]), SUM(Cantidad) - SUM([Cantidad a usar]) AS Saldo

FROM LaTabla

GROUP BY Producto

¿No?

Hola y gracias por tu respuesta. Así es estimado, el asunto es que la primera suma resulta todo ok es decir: SUM(cantidad); pero cuando intento realizar alguna otra suma por decir: SUM([cantidad a usar]) en lugar de sumar multiplica por dos? consecuentemente el resto sale mal. Otro tema, y la verdad me tiene consternado, es que cuando hago el GROUP BY me pide agregar todos los otros campos es decir algo así: GROUP BY productos, cantidad, [cantidad a usar]... (y los demás campos); cuando completo todo ello me arroja otro error que me dice que no he agregado algún campo a la función agregada (SUM).

la verdad ya se me acabaron las combinaciones para esta consulta resumen y ya no se que mas poder agregar o quitar?

Tu problema debe venir por otro lado. El SUM siempre devuelve la suma, no el producto.

Quizá deberías empezar con la consulta lo más sencilla que puedas e ir complicándola a medida que vaya funcionando.

Por otra parte, es cierto que si usas agregados (SUM, COUNT, etc.) te va a exigir que agrupes por todo el resto de campos. De lo contrario, ¿cómo quieres que te pueda devolver un resultado único?. O te agrupa por esos campos o te aplica alguna función para compactarlos.

¿Me explico?

Muchas gracias por la aclaración y ciertamente creo que me apresure demasiado para esta consulta. voy a tomar tu consejo y comenzare desde cero e ir añadiendo campos, expresiones o lo que necesite. espero que resulte bien. Saludos

Respuesta

Krnal no me estas ayudando... -10 estrella.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas