algun tips. de como hacer esto

11/06/2005 - 21:25 por Javier | Informe spam
Hola !
necesito hacer un select en el que usando algunos campos para evaluacion mas
no me interesa que sea parte de la salida pero dada la restriccion de que
todo campo debe formar parte del group by ya sabran que genera error el
proposito es generar un query sumarizado por periodo que debe identificar si
el valor debe ser convertido a la moneda especificada en este caso 'US$'

En sintesis el asunto es es que para pasar los parametros a la funcion de
conversion se deben indentificar ciertos valores que no deben formar parte de
la agrupacion.

Algun consejo? por favor

Gracias por su coolaboracion

Javier

select v.codempresa ,v.ano as periodo,
valor ÊSE WHEN V.CODMONEDA='US$' THEN
(sum(valor)-sum(v.val_itbis)*v.itbis_inclu)*d.signo else
DBO.SFFMONEDATO(v.codmoneda ,
(sum(valor)-sum(v.val_itbis)*v.itbis_inclu)*d.signo, v.f_mov, v.tasa,'US')
END,
descuento = CASE WHEN V.CODMONEDA='US$' THEN sum(v.descuento)*d.signo else
DBO.SFFMONEDATO(v.codmoneda, sum(v.descuento)*d.signo, v.f_mov,
v.tasa,'US$') end,
val_itbis ÊSE WHEN V.CODMONEDA='US$' THEN sum(v.val_itbis)*d.signo else
DBO.SFFMONEDATO(v.codmoneda , sum(val_itbis)*d.signo, v.f_mov, v.tasa,'US$')
end
FROM ventas v LEFT OUTER JOIN documen d ON v.coddoc = d.coddoc
LEFT OUTER JOIN clientes a ON v.codclte = a.codclte
where v.codempresa in ('','01','02')
and v.f_mov >='2005/06/10' and v.f_mov <= '2005/06/11' and v.tipo_trans =
'A'
AND d.es_venta=1 AND d.origen in ('D','C')
group by v.codempresa,d.signo,v.itbis_inclu, v.ano order by v.codempresa,
v.ano
 

Leer las respuestas

#1 Maxi
12/06/2005 - 17:07 | Informe spam
Hola Javier, pero si haces un solo SUM la cosa cambia, o sea:


CASE WHEN V.CODMONEDA='US$' THEN
sum(valor-(v.val_itbis)*v.itbis_inclu)*d.signo) else

El ELse que pusiste no lo comprendo por esto:

else
DBO.SFFMONEDATO(v.codmoneda ,
(sum(valor)-sum(v.val_itbis)*v.itbis_inclu)*d.signo, v.f_mov, v.tasa,'US')

Como pensas que va a sumar?



Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Javier" escribió en el mensaje
news:
Hola !
necesito hacer un select en el que usando algunos campos para evaluacion
mas
no me interesa que sea parte de la salida pero dada la restriccion de que
todo campo debe formar parte del group by ya sabran que genera error el
proposito es generar un query sumarizado por periodo que debe identificar
si
el valor debe ser convertido a la moneda especificada en este caso 'US$'

En sintesis el asunto es es que para pasar los parametros a la funcion
de
conversion se deben indentificar ciertos valores que no deben formar parte
de
la agrupacion.

Algun consejo? por favor

Gracias por su coolaboracion

Javier

select v.codempresa ,v.ano as periodo,
valor ÊSE WHEN V.CODMONEDA='US$' THEN
(sum(valor)-sum(v.val_itbis)*v.itbis_inclu)*d.signo else
DBO.SFFMONEDATO(v.codmoneda ,
(sum(valor)-sum(v.val_itbis)*v.itbis_inclu)*d.signo, v.f_mov, v.tasa,'US')
END,
descuento = CASE WHEN V.CODMONEDA='US$' THEN sum(v.descuento)*d.signo
else
DBO.SFFMONEDATO(v.codmoneda, sum(v.descuento)*d.signo, v.f_mov,
v.tasa,'US$') end,
val_itbis ÊSE WHEN V.CODMONEDA='US$' THEN sum(v.val_itbis)*d.signo
else
DBO.SFFMONEDATO(v.codmoneda , sum(val_itbis)*d.signo, v.f_mov,
v.tasa,'US$')
end
FROM ventas v LEFT OUTER JOIN documen d ON v.coddoc = d.coddoc
LEFT OUTER JOIN clientes a ON v.codclte = a.codclte
where v.codempresa in ('','01','02')
and v.f_mov >='2005/06/10' and v.f_mov <= '2005/06/11' and v.tipo_trans > 'A'
AND d.es_venta=1 AND d.origen in ('D','C')
group by v.codempresa,d.signo,v.itbis_inclu, v.ano order by v.codempresa,
v.ano

Preguntas similares