SQL - CONSULTA TOTAL

   
Vista:

CONSULTA TOTAL

Publicado por asdfg (21 intervenciones) el 08/11/2011 19:48:27
tengo una consulta que me arroja una matriz de la siguiente forma

ARTICULO ENE FEB MAR ...... DIC TOTAL1
articulo 1 2 1 2 0 5
articulo 5 1 2 0 8
articulo 7 0 2 0 9
articulo 3 1 2 0 6
TOTAL2 ???????????????????????????


Como puedo obtener el TOTAL2 por mes de todos los articulos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

CONSULTA TOTAL

Publicado por leonardo_josue (877 intervenciones) el 08/11/2011 23:02:16
Al igual que la gran mayoría de los foristas NO MENCIONAS QUÉ MANEJADOR DE BD ESTÁS UTILIZANDO. Es recomendable que siempre menciones este punto, pues la sintaxis suele variar entre los distintos motores.

Algunas BD proporcionan funciones especiales para hacer este tipo de consultas así por ejemplo SQL Server tiene la cláusula WITH CUBE y ROLLUP para agrupar y sumarizar automáticamente los registros, pero no todos manejan este operador. La opción "manual" podría ser un UNION donde no agrupes por elemento, te dejo el ejemplo de cómo sería en ambos casos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DECLARE @Tabla TABLE (articulo VARCHAR(10), ene INT, feb INT, mar INT, dic INT)
INSERT INTO @Tabla VALUES ('articulo 1', 1, 2, 1, 2)
INSERT INTO @Tabla VALUES ('articulo 2', 1, 2, 3, 4)
INSERT INTO @Tabla VALUES ('articulo 2', 5, 1, 2, 8)
INSERT INTO @Tabla VALUES ('articulo 3', 7, 0, 2, 9)
INSERT INTO @Tabla VALUES ('articulo 3', 7, 0, 2, 9)
INSERT INTO @Tabla VALUES ('articulo 4', 3, 1, 2, 6)
 
select articulo, sum(ene) ene, sum(feb) feb, sum(mar) mar, sum(dic) dic,
sum(ene + feb + mar + dic) total1
from @Tabla
group by articulo with cube
 
 
select articulo, sum(ene) ene, sum(feb) feb, sum(mar) mar, sum(dic) dic,
sum(ene + feb + mar + dic) total1
from @Tabla
group by articulo
union
select 'total2' articulo, sum(ene) ene, sum(feb) feb, sum(mar) mar, sum(dic) dic,
sum(ene + feb + mar + dic) total1
from @Tabla


Si utilizas otra BD es cuestión de que investigues un poco si soporta este tipo de operaciones o implementa algo semejante.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CONSULTA TOTAL

Publicado por asdfg (21 intervenciones) el 09/11/2011 13:58:17
Leo: Gracias por la respuesta, trabajo con oracle 10g. Esta es una consulta similar pero para sumar por sexo.

SELECT t.ind_sexo, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='01' THEN 'MES' ELSE '' END) ENERO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='02' THEN 'MES' ELSE '' END) FEBRERO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='03' THEN 'MES' ELSE '' END) MARZO , count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='04' THEN 'MES' ELSE '' END) ABRIL , count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='05' THEN 'MES' ELSE '' END) MAYO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='06' THEN 'MES' ELSE '' END) JUNIO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='07' THEN 'MES' ELSE '' END) JULIO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='08' THEN 'MES' ELSE '' END) AGOSTO, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='09' THEN 'MES' ELSE '' END) SEPTIEMBRE, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='10' THEN 'MES' ELSE '' END) OCTUBRE, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='11' THEN 'MES' ELSE '' END) NOVIEMBRE, count(CASE WHEN TO_CHAR(T.FEC_INGRES,'MM')='12' THEN 'MES' ELSE '' END) DICIEMBRE,
count(*) TOTAL
FROM UR_TREGPAC T where to_char(t.fec_ingres,'MM')<= to_char(sysdate,'mm') AND to_char(t.fec_ingres,'YYYY')= to_char(sysdate,'yyyy') GROUP BY T.IND_SEXO


ESTO ME DA COMO RESULTADO


SEXO ENE FEB MAR ABR ..... TOTAL
F 1 2 3 4 10
M 2 1 1 1 5
TOTAL2 ???????????????????????? NECESITO OBTENER EL TOTAL2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CONSULTA TOTAL

Publicado por leonardo_josue (877 intervenciones) el 09/11/2011 16:06:20
Hola de nuevo asdfg:

Me pregunto si realmente trataste de hacer algo de lo que te puse en el post... tal pareciera que estás esperando a que te haga la consulta... discúlpame mucho, pero no es el caso.... En el post te pedía que investigaras si el motor de BD que estás utilizando manejaba algo semejante a la función de WITH CUBE de SQL Server, ¿lo hiciste? no lo creo, pues si te hubieras tomado cinco minutos para preguntarle a San Google hubieras encontrado algo como esto:

http://psoug.org/reference/rollup.html
http://www.dba-oracle.com/t_cube.htm

Por otro lado, también te decía que tienes la opción de hacer una UNION, poniendo LA MISMA CONSULTA QUE TE GENERA LA PRIMER PARTE PERO SIN AGRUPAR... tal pareciera que tampoco lo hiciste, y si lo hiciste pues obviamente no te funcionó, pero deberías poner el código que intentaste hacer para poder ver donde está el error.

Mucho ojo con eso.., aquí se te darán pistas de los que tienes que hacer, pero no esperes que otro haga tu trabajo.

Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CONSULTA TOTAL

Publicado por asdfg (21 intervenciones) el 09/11/2011 17:01:25
Leo en ningún caso pretendo que me hagas el trabajo, en todo caso si intente hacer lo que me dijiste con union all. Si no quieres ayudar no contestes no es obligacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CONSULTA TOTAL

Publicado por leonardo_josue (877 intervenciones) el 09/11/2011 18:48:11
Quiero ayudar, no por obligación, como bien lo comentas, sino porque me gusta hacerlo, pero tal pareciera que no aprecias mucho la ayuda que he intentado darte... Dices que intentaste utilizar la UNION, pero no funcionó, sin embargo no nos mencionas por qué no funcionó... ¿La consulta marcó algún error?, si es así ¿qué error es el que te está marcando?. ¿La consulta no te regresa los resultados esperados? bueno, deberías comenzar por decirnos qué información tienes en tu tabla y qué esperas como salida, es posible que existan algunas otras formas de hacer la consulta? ¿Leíste algo acerca de la opción GROUP BY CUBE que te puse?, supongo que si lo hiciste tampoco funcionó, pero no das información acerca de esto.

Entre más detalles nos pongas acerca de tu BD y tu consulta será más fácil tratar de ayudarte, incluso sería recomendable que nos pusieras algunos datos de ejemplo. A menos que entre los foristas exista algún vidente que sepa la respuestas a las preguntas que te hago resulta casi imposible tratar de ayudarte.

Y finalmente, si no quieres hacer caso de las recomendaciones que te hago, no lo hagas, tampoco tienes obligación..

Saludos y buena suerte
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CONSULTA TOTAL

Publicado por amesia (1 intervención) el 11/06/2012 17:17:25
De mal agradecidos esta lleno el mundo......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar