Buenas tardes,
¿Alguien puede ayudarme con la siguiente tema?
Mi consulta es la siguiente acerca de como redondear a dos decimales la suma de varios registros.
Tabla: Ventas
Campo a sumar: importe
Este campo es de tipo REAL, Len=8, UILen=12 y UIDec=2
registro1=10.52
registro2=5.92
registro3=523.63697
Mi consulta sql es:
select sum(importe) from ventas
el resultado:540.07697
¿como redondear el resultado a dos digitos
quedando como: 540.08?
he utilizado la instrucciones Round(), CAST, DECIMAL y no he tenido exito, alguien sabe algo al respecto?
Gracias de antemano por la asesoria.
Saludos cordiales.
Comentarios
Re: Redondeo de decimales en PostgresSQL
Vie, 02/03/2012 - 13:35 — doctoreHola cestcor.
Lo mejor cuando se trabaja con importes es siempre emplear el tipo NUMERIC. De esta forma tendrás la máxima precisión posible en PostgreSQL y no tendrás problemas con el redondeo. Así pues, si por ejemplo tenemos un campo monetario que puede contener hasta 999.99 €/$ etc..., definiríamos ese campo como:
Un saludo.
Re: Redondeo de decimales en PostgresSQL
Mar, 06/03/2012 - 19:40 — cestcorGracias por la aclaracion.
Saludos cordiales.
Redondeo de decimales en PostgresSQL
Vie, 20/04/2012 - 07:40 — albreyesHola cestcor.
prueba con esto
SELECT to_char(sum(importe),'99G999.99') from ventas ;
Consulta sobre triggers
Mié, 13/03/2013 - 15:44 — omarantonioBuenos días.
Gracias por el aporte muy valioso.
Tengo una consulta:
Un trigger que debe 'dispararse' después de la actualización de una columna en una tabla.
El caso es que dentro de la función ligada al trigger, hay unas condiciones de comparación entre el nuevo valor de la columna y el valor de otra columna.
Ej:
CREATE OR REPLACE FUNCTION ActualizarEstado()
RETURNS TRIGGER AS
$ActualizarEstado$
DECLARE
BEGIN
if NEW.es_activo = 'Y' then
--Si el nuevo valor de la columna es_activo es 'Y', actualizar la columna fue_activo con 'Y' donde el id del estudiante sea igual al id del mismo en la variable NEW
update estudiante
set fue_activo = NEW.es_activo
where estudiante_id = NEW.estudiante_id;
RETURN NEW;
else
if (NEW.es_activo = 'N' and estudiante.fue_activo='Y') then
--Si el nuevo valor de la columna es_activo es 'N' y fue_activo='Y' actualizar la columna fecha_cambio_estado con now() para guardar la fecha de cambio
update adempiere.c_payment
set fecha_cambio_estado = now()
where estudiante_id = NEW.estudiante_id;
--
RETURN NEW;
end if;
end if;
END;
$ActualizarEstado$ LANGUAGE plpgsql;
CREATE TRIGGER ActualizarEstado after UPDATE
ON estudiante FOR EACH row
EXECUTE PROCEDURE ActualizarEstado();
Se genera el mensaje 'La columna fue_activo no existe'
Saludos,
Omar