Skip site navigation (1) Skip section navigation (2)

Consulta compleja

From: Ricardo Fuentes Pereira <rfuentesp(at)gmail(dot)com>
To: "'pgsql-es-ayuda(at)postgresql(dot)org'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Consulta compleja
Date: 2005-05-27 13:39:53
Message-ID: 42972329.5060209@gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola lista.
Tengo el siguiente problema.
Necesitaba generar una consulta (SP) para saber cuanto le he comprado a 
un proveedor en especifico (monto).
La consulta que hice fue la siguiente:

.. inicio codigo

SELECT *
 FROM (
     SELECT  * ,
         (fact.compra.sum_valor_fc + fact_gasto.sum_valor_fg) AS sum_valor
     FROM sx_prov prov,
          -- fact_compra
          -- recorro la tabla sx_fact_compra segun el rut
          -- para obtener a cuanto ascienden las factura de compra
          (
             SELECT COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS 
sum_valor_fc
             FROM sx_fact_compra
             WHERE rut = $1
          ) AS fact_compra,
          -- fact_gasto
          -- analogo a la sx_fact_compra
          (
             SELECT COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) AS 
sum_valor_fg
             FROM sx_fact_gasto
             WHERE rut = $1
          ) AS fact_gasto
       WHERE prov.rut = $1
       GROUP BY
          --- los GROUP BY necesarios
) AS tabla
ORDER BY sum_valor DESC

-- fin codigo

Y funciona correctamente.
Ahora necesito una funcion que devuelva una lista de proveedores con lo 
que le he comprado a cada uno.
Intenté con algo así:

SELECT *
 FROM (
     SELECT  * ,
         (fact.compra.sum_valor_fc + fact_gasto.sum_valor_fg) AS sum_valor
     FROM sx_prov prov,
          -- fact_compra
          -- recorro la tabla sx_fact_compra segun el rut
          -- para obtener a cuanto ascienden las factura de compra
          (
             SELECT rut, COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) 
AS sum_valor_fc
             FROM sx_fact_compra
             GROUP BY rut
          ) AS fact_compra,
          -- fact_gasto
          -- analogo a la sx_fact_compra
          (
             SELECT rut, COALESCE(SUM(valor_neto * (1 + valor_iva)), 0) 
AS sum_valor_fg
             FROM sx_fact_gasto
             GROUP BY rut
          ) AS fact_gasto
       WHERE prov.rut = fact_compra.rut
        AND    prov.rut = fact_gasto.rut
       GROUP BY
          --- los GROUP BY necesarios
) AS tabla
ORDER BY sum_valor DESC

Pero al recuperarla me entrega sumas erroneas. ¿Alguna idea de por que 
ocurre esto?
¿Cual tendria que ser la consulta?

Salu2

Responses

pgsql-es-ayuda by date

Next:From: Ing. Jhon Carrillo - Caracas, VenezuelaDate: 2005-05-27 13:42:27
Subject: Re: returns de las funciones
Previous:From: Jairo Martín MiguelDate: 2005-05-27 04:59:28
Subject: asignar a una variable el resultado de una función

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group