From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Hernan Chamorro Sevilla <admsistemas(at)corporacionquezada(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: consulta de sql para postgresql |
Date: | 2005-09-29 16:16:41 |
Message-ID: | 20050929161641.GI5272@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Thu, Sep 29, 2005 at 09:20:05AM -0500, Hernan Chamorro Sevilla wrote:
Hola,
> (case when COALESCE(ARCLIENTE.CIUDAD,'*#')='*#' THEN ''
> else (SELECT NOMBRE FROM ARINDEX
> WHERE ARINDEX.EMPRESA=ARCARTERA.EMPRESA AND
> ARINDEX.DATA=ARCLIENTE.DATA AND
> ARINDEX.CODIGO=ARCLIENTE.CIUDAD) end ) AS NOM_CIUDAD,
> (case when COALESCE(ARCARTERA.BANCO,'*#')='*#' THEN ''
> else (SELECT NOMBRE FROM ARINDEX
> WHERE ARINDEX.EMPRESA = ARCARTERA.EMPRESA AND
> ARINDEX.DATA=ARCARTERA.DATA_B AND
> ARINDEX.CODIGO=ARCARTERA.BANCO)end) AS NOM_BANCO,
> (case when COALESCE(ARCARTERA.TARJETA,'*#')='*#' THEN ''
> else (SELECT NOMBRE FROM ARINDEX
> WHERE ARINDEX.EMPRESA = ARCARTERA.EMPRESA AND
> ARINDEX.DATA=ARCARTERA.DATA_T AND
> ARINDEX.CODIGO=ARCARTERA.TARJETA)end ) AS NOM_TARJETA ,
> ARCLIENTE.CODIGO1, ARCLIENTE.APELLIDO, ARCLIENTE.NOMBRE
>
> FROM TBBIT_CANCELACION ,ARCARTERA ,ARCLIENTE
> WHERE TBBIT_CANCELACION.can_secuencia =ARCARTERA.CAN_SECUENCIA (+)
> AND TBBIT_CANCELACION.can_cliente =ARCLIENTE.CODIGO (+)
> )
> ;
>
> me sujeriste utilizar el left join y el rigth join pero si fuera tan
> amable en este codigo cual seria el esquema del left join y el rigth
> porque en otros casos tengo que el primer campo tiene el (+).
> para mi caso es indispensable que vaya con este formato.
Creo que tendrias que reescribir el FROM de esta manera:
from (tbbit_cancelacion left join arcartera using (can_secuencia))
left join arcliente on (tbbit_cancelacion.can_cliente = arcliente.codigo)
No estoy 100% seguro si los parentesis alrededor del primer join son
necesarios o no. Observa que el WHERE en esta consulta quedaria vacio.
Una cosa que me llama la atencion es esto:
case when coalesce(algo, '*#') = '*#' THEN '' else (select foo) end
Me parece mucho mas natural escribirlo asi:
coalesce ((select foo), '')
o quizas,
CASE WHEN algo IS NULL THEN '' ELSE (select foo) END
(para ahorrarse el SELECT cuando el "algo" es null)
> y otro caso es:
> FROM (SELECT CODIGO, NOMBRE FROM ARINDEX, VW_FACNOTVTA
> WHERE ARINDEX.CODIGO = VW_FACNOTVTA.VENDEDOR
> AND ARINDEX.DATA='V' ORDER BY CODIGO) A ) as
> NOM_VENDEDOR,
> WHERE ROWNUM =1) as NOM_VENDEDOR,
>
> en oracle utilizo el ROWNUM y en postgresql cual seria la funcion o de
> que forma puedo comparar.
Probablemente deberias hacer "LIMIT 1" en lugar de WHERE ROWNUM=1 ...
--
Alvaro Herrera http://www.PlanetPostgreSQL.org
Criptografía: Poderosa técnica algorítmica de codificación que es
empleada en la creación de manuales de computadores.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-09-29 16:36:54 | Re: Ordenació |
Previous Message | Manuel Sugawara | 2005-09-29 16:15:47 | Re: Ordenació |