From: | Lynkx <lynkx(at)surnet(dot)cl> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Consulta SQL algo compleja |
Date: | 2004-12-13 19:01:24 |
Message-ID: | 41BDE704.2050909@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola comunidad postgres.
Tengo el siguiente problema:
Poseo las sgtes tablas (simplificado para solo mostrar el problema
en si):
facturas
- num_fact (PK)
- cod_sucursal (FK con sucursales)
- valor
notas_credito
- num_nc (PK)
- cod_sucursal (FK con sucursales)
- num_fact (FK con facturas)
- valor
sucursales
- cod_sucursal (PK)
- nombre
Y deseo mostrar, para cada sucursal, la suma de facturas.valor menos la
suma de notas_credito.valor.
Contar que una factura puede tener cero o mas notas_credito (se que hay
una redundancia al tener cod_sucursal tambien en notas_credito, pero
bueno asi venia el modelo)
Ingreso los sgtes datos:
sucursales:
1, 'matriz'
2, 'sede'
facturas:
1, 1, 100
2, 2, 200
3, 1, 50
notas_credito:
1, 1, 1, 25
Y se me ocurrio ejecutar lo siguiente para resolver mi problema:
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)
El primer registro esta correcto, pero el segundo no. Debería devolver
un 200. Se que algo tiene que ver el LEFT JOIN que estoy ejecutando. No
logro visualizar la consulta para que devuelva:
1 matriz 125
2 sede 200
Cualquier ayuda es bienvenida.
Saludos.
From | Date | Subject | |
---|---|---|---|
Next Message | Martín Marqués | 2004-12-13 19:15:14 | Re: Acentos en postgres |
Previous Message | Carlos Jordán | 2004-12-13 17:51:29 | Re: Acentos en postgres |