Ayuda con consulta sql(sum)

13/12/2007 - 22:07 por milhguer | Informe spam
Hola todos espero q me puedan ayudar nuevamente con una consulta
disculpen por las molestias es que soy un novato en esto
todavia.Necesito realizar un SUM(Campo) y agregando un Distinct a
otro
campo es decir asi


select distinct(encuesta),sum(peso) from multiples where c2=1 and
p78>0


pero me sale error cuando relizo esta consulta y me pide que agrupe
el
campo en este caso el campo es encuesta pero si le agrupo por encuesta
es lo mismo que nada


Para que me entienda mejor esta es la estructura de mi tabla
Multiples:


encuesta control c2 p78 peso
1 1 1 2 1.00000
1 2 1 NULL 1.00000
1 3 1 NULL 1.00000
1 4 1 NULL 1.00000
2 1 2 2 1.00000
2 2 2 3 1.00000
2 3 2 NULL 1.00000
2 4 2 NULL 1.00000
3 1 2 2 1.00000
3 2 2 3 1.00000
3 3 2 NULL 1.00000
3 4 2 NULL 1.00000
4 1 1 2 1.00000
4 2 1 5 1.00000
4 3 1 NULL 1.00000
4 4 1 NULL 1.00000


Como pueden ver el campo encuesta tiene 4 encuestas que se repiten 4
veces por cada encuesta pero lo que yo quiere es sumar el peso con un
distinct(encuesta) si yo coloco


select sum(peso) from multiples where c2=1 and p78>0


El resultado q me bota es "3" porque toma las encuestas(1,4,4) porque
toma la encuesta 4 dos veces si vemos la tabla y nos ubicamos la
encuesta 4 y vemos que en el campo P78 tiene 2,5 es por eso que toma
dos veces 4.


Y cuando coloco un distinct(encuesta)


select distinct(encuesta) from multiples where c2=1 and p78>0


Halli recien me toma las encuestas (1,4) de aqui quiero tomar la suma
del peso y cual resultado seria 2


Pero cuando coloco


select distinct(encuesta),sum(peso) from multiples where c2=1 and
p78>0


sale error como ya mencione anteriormente.Intente realizar una
consulta con una sub subconsulta pero el resultado es el mismo me
sale
el resultado 3 esta es la otra consulta que trate de realizar pero
por
lo visto e lo mismo

SELECT SUM(PESO) FROM MULTIPLES WHERE C2=1 AND P78 > 0 and
ENCUESTA in(
SELECT DISTINCT(ENCUESTA) FROM MULTIPLES WHERE C2=1 AND P78 >
0 )


Espero su ayuda de ante mano gracias

PD
Con el campo control juega con el campo p78 es decir no siempre el
control=1 y la encuesta =4 van tener informacion en el campo p78,
puede dar el caso que el campo control=2 y la encuesta 4 si tenga
informacion en la p78 > 0

Por ejemplo esta tabla sgt y compara con la tabla anterior visualiza
la encuesta 4 con control 1 y 2 vas la diferencia con la otra tabla
sobre la informacion en el campo p78

encuesta control c2 p78 peso
1 1 1 2 1.00000
1 2 1 NULL 1.00000
1 3 1 NULL 1.00000
1 4 1 NULL 1.00000
2 1 2 2 1.00000
2 2 2 3 1.00000
2 3 2 NULL 1.00000
2 4 2 NULL 1.00000
3 1 2 2 1.00000
3 2 2 3 1.00000
3 3 2 NULL 1.00000
3 4 2 NULL 1.00000
4 1 1 NULL 1.00000
4 2 1 5 1.00000
4 3 1 NULL 1.00000
4 4 1 NULL 1.00000

SALUDOS
 

Leer las respuestas

#1 Carlos M. Calvelo
13/12/2007 - 22:31 | Informe spam
Hola milhguer,

On 13 dec, 22:07, milhguer wrote:
Hola todos espero q me puedan ayudar nuevamente con una consulta
disculpen por las molestias es que soy un novato en esto
todavia.Necesito realizar un SUM(Campo) y agregando un Distinct a
otro
campo es decir asi

select distinct(encuesta),sum(peso) from multiples where c2=1 and
p78>0




El distinct no es para eso.
Pueba con esto:

select encuesta, isnull(sum(peso), 0) as 'TotalPeso'
from Multiples
group by encuesta

Si quieres que te sume solo ciertos pesos
dependiendo de otros campos puedes poner un
WHERE después del FROM.
Por ejemplo, para sumar los pesos por encuesta
pero solo para c2 = 2:

select encuesta, isnull(sum(peso), 0) as 'TotalPeso'
from Multiples
where c2 = 2
group by encuesta

Espero haber entendido bien tu pregunta.

Saludos,
Carlos

Preguntas similares