From: | innenka innenka <innenka(at)yahoo(dot)com> |
---|---|
To: | Leo Gamez CCD Desarrollo <desarrollo(at)ccdasesores(dot)e(dot)telefonica(dot)net>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: RV: Consulta SQL algo compleja |
Date: | 2004-12-14 13:07:11 |
Message-ID: | 20041214130711.89194.qmail@web52503.mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Fuera posible obtener información de como operan los
procedimientos almacenados en Postgresql?
Tenemos algunos en MS SQL Server 2000 y desamos
migrarlos. Como debe de hacerse?
Diego Tovar
Colombia
Gracias.
--- Leo Gamez CCD Desarrollo
<desarrollo(at)ccdasesores(dot)e(dot)telefonica(dot)net> wrote:
> Hola,
>
> Creo que existe una funcion en postgres para
> detectar un valor nulo, es coalesce(). Tambien
> funciona en mysql. Adjunto su explicacion de la
> documentacion online. Buen provecho.
>
>
http://www.postgresql.org/docs/7.4/static/functions-conditional.html
>
> 9.12.2. COALESCE
>
> COALESCE(value [, ...])
>
> The COALESCE function returns the first of its
> arguments that is not null. Null is returned only if
> all arguments are null. This is often useful to
> substitute a default value for null values when data
> is retrieved for display, for example:
>
> SELECT COALESCE(description, short_description,
> '(none)') ...
>
> Like a CASE expression, COALESCE will not evaluate
> arguments that are not needed to determine the
> result; that is, arguments to the right of the first
> non-null argument are not evaluated.
>
>
------------------------------------------------------
>
> Saludos,
>
> Leo
>
> PD: Quiza alguien se ofenda porque puedo no
> pertenecer a la lista de correo. Tuve problemas
> cuando me suscribi, pero desde que Alvaro Herrera me
> hecho una mano para arreglarlo, no he vuelto a
> comprobar mi status. Sirva este correo para
> comprobarlo.
>
> ________________________________
>
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org en nombre de
> Jaime Casanova
> Enviado el: lun 13/12/2004 23:41
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] Consulta SQL algo
> compleja
>
>
>
> --- Lynkx <lynkx(at)surnet(dot)cl> escribió:
>
> > SELECT DISTINCT
> > s.cod_sucursal, s.nombre,
> > (SUM(f.valor) - SUM(n.valor)) AS sum_valor
> >
> > FROM facturas f LEFT JOIN notas_credito n ON
> > (f.num_fact = n.num_fact
> > AND f.cod_sucursal = n.cod_sucursal), sucursales s
> >
> > WHERE f.cod_sucursal = s.cod_sucursal
> >
> > GROUP BY
> > s.cod_sucursal, s.nombre
> >
> > Y devuelve lo sgte:
> > 1 matriz 125
> > 2 sede (no hay valor)
> >
>
> 1) No se para que usas el distinct, de todas formas
> ya
> estas haciendo un group by y el efecto va a ser el
> mismo. NO se si postgres sea lo suficientemente
> pilas
> para saber que eso esta de mas en todo caso sacalo.
>
> 2) Ahora tu problema, el segundo sum (el de la
> sucursal 2) retorna null por que no hay notas de
> credito en esa sucursal y cualquier valor sumado,
> restado, multiplicado, dividido, etc, etc por null
> se
> hace NULL!!
>
> Solucion: en informix y en oracle hay una funcion
> llamada nvl que se usaba para estos casos. dicha
> funcion no existe en postgres y no se que mecanismo
> han puesto para reemplazarla yo escribi una funcion
> nvl para mi aqui te doy el codigo
>
> CREATE OR REPLACE FUNCTION "public"."nvl" (numeric,
> numeric) RETURNS numeric AS'
> select case when $1 is null then $2 else $1
> end;
> 'LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT
> SECURITY
> INVOKER;
>
> y tu select quedaria + o - asi:
>
> SELECT s.cod_sucursal, s.nombre, (SUM(f.valor) -
> nvl(SUM(n.valor)), 0) AS sum_valor
> FROM facturas f LEFT JOIN notas_credito n
> ON (f.num_fact = n.num_fact AND
> f.cod_sucursal = n.cod_sucursal),
> sucursales s
> WHERE f.cod_sucursal = s.cod_sucursal
> GROUP BY s.cod_sucursal, s.nombre
>
>
> Atentamente,
> Jaime Casanova
>
>
_________________________________________________________
> Do You Yahoo!?
> Información de Estados Unidos y América Latina, en
> Yahoo! Noticias.
> Visítanos en http://noticias.espanol.yahoo.com
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: ¿Has buscado en los archivos de nuestra lista
> de correo?
>
>
> http://archives.postgresql.org/pgsql-es-ayuda
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es
> en irc.freenode.net
>
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin Quijada | 2004-12-14 14:20:31 | Re: Acentos en postgres |
Previous Message | Cristofer Nicolas Reyes Aguilera | 2004-12-14 13:01:22 | Re: Acentos en postgres |