Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Acumulador en una Query

Estas en el tema de Acumulador en una Query en el foro de Bases de Datos General en Foros del Web. hola amigos: Les comento, estoy haciendo o mejor dicho he intentado hacer un acumular con una query y hasta el momento no me resulta tal ...
  #1 (permalink)  
Antiguo 24/02/2011, 12:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 12
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Acumulador en una Query

hola amigos:

Les comento, estoy haciendo o mejor dicho he intentado hacer un acumular con una query y hasta el momento no me resulta tal cual como la necesito, es por esto que recurro a ustedes.

La cosa es que estes es el código y los resultados.

select convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 1 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 2 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 3 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 4 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 5 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 6 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 7 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 8 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 9 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 10 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(Case When (convert(int,periodo)%100) <= 11 then a.mto_ingreso Else 0 End))/1000000),
convert(numeric(18,0),(sum(a.mto_ingreso))/1000000)

from reportes..rep_ges_presupuesto a
WHERE a.periodo < 201101 and
a.periodo >= 201001 and
a.rut_empresa = '96756060-K' and
convert(numeric(4,0),(convert(int,201101)*0.01))= 2011
GROUP BY a.rut_empresa


1107 2202 3267 4324 5373 6472 7595 8712 9872 11084 12316 13636


El tema es que me aparece el resultado en varios campos, pero necesito registros,o sea que qude así:

1107
2202
3267
4324
5373
6472
7595
8712
9872
11084
12316
13636

Eso es lo que necesito, pero no he podido sacarlo hasta el momento. Así que si tengo noticias antes se las informo...


y desde ahora muchas gracias a la persona que me pueda echar una mano en este asunto.

gracias!
  #2 (permalink)  
Antiguo 24/02/2011, 14:26
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Acumulador en una Query

Saludos.

Los resultados están correctos, pero los necesitas _mostrados_ de forma diferente?
Sí es así, te los está mostrando tal y como se los estaś pidiendo:
selec campo1, campo2, campo3
devuelve: campo1 campo2 campo3

Otra pregunta, por qué con un CASE?

La respuesta a estas 2 preguntas, te llevan al resultado
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 24/02/2011, 14:54
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Acumulador en una Query

Hola demh69, creo que deberías de comenzar por decirnos qué es lo que estás tratando de obtener, cuál es la estructura de tus tablas y darnos algunos datos de ejemplo. Estoy seguro que debe de existir una forma más fácil de hacer lo que quieres. Según yo estás tratando de separar por meses (o algo por el estilo) te repito que sin más datos resulta complicado tratar de ayudarte, pero prueba con esto:

Código:
select
convert(int,periodo)%100 as periodo,
sum(a.mto_ingreso)/1000000 as total
from reportes.rep_ges_presupuesto a
WHERE	a.periodo < 201101 and
a.periodo >= 201001 and
a.rut_empresa = '96756060-K' and
convert(numeric(4,0),(convert(int,201101)*0.01))= 2011
GROUP BY convert(int,periodo)%100
Te repito, esto es una sólo una idea. Otra forma, pero nada elegante de obtener el resultado que esperas es hacer UNION's, seleccionando un campo a la vez.

Y una recomendación, si vas a poner tu texto de algún color trata que este sea de colores fuertes, o de preferencia deja el texto en color negro. Resultó bastante molesto para la vista el color que elegiste.

Saludos
Leo.

Etiquetas: query
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:23.