Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Consulta condicional (http://www.forosdelweb.com/f21/consulta-condicional-569350/)

monycaco 26/03/2008 06:30

Consulta condicional
 
Hola, tengo la siguiente consulta:

SELECT FACTURACION.Codigo, FACTURACION.Referencia, referencias.PROYECTO, FACTURACION.Fecha,

ROUND( (((FACTURACION.Importe_1+FACTURACION.Importe_2+FAC TURACION.Importe_3+FACTURACION.Importe_4+FACTURACI ON.ImpotroIVA)-(FACTURACION.Visados+FACTURACION.Retenciones))*((F ACTURACION.IVA/100)+1))+FACTURACION.ImpsinIVa ,2) AS A_COBRAR,

ROUND( IF(sum(COBROS.Cobrado)>0.01,sum(COBROS.Cobrado), 0) ,2) AS COBRADO,

ROUND( ((((FACTURACION.Importe_1+FACTURACION.Importe_2+FA CTURACION.Importe_3+FACTURACION.Importe_4+FACTURAC ION.ImpotroIVA)-(FACTURACION.Visados+FACTURACION.Retenciones))*((F ACTURACION.IVA/100)+1))+FACTURACION.ImpsinIVa)- IF(sum(COBROS.Cobrado)>0.01,sum(COBROS.Cobrado), 0) ,2) AS PENDIENTE

FROM (FACTURACION LEFT JOIN referencias ON FACTURACION.Referencia=referencias.REFERENCIA) LEFT JOIN COBROS ON FACTURACION.Codigo=COBROS.Codigo_fra

GROUP BY FACTURACION.Codigo,FACTURACION.Referencia,referenc ias.PROYECTO, FACTURACION.Fecha

ORDER BY Fecha DESC

Mi problema viene al darle la condicón 'PENDIENTE > 0'


he probado con:

WHERE (ROUND( ((((FACTURACION.Importe_1+FACTURACION.Importe_2+FA CTURACION.Importe_3+FACTURACION.Importe_4+FACTURAC ION.ImpotroIVA)-(FACTURACION.Visados+FACTURACION.Retenciones))*((F ACTURACION.IVA/100)+1))+FACTURACION.ImpsinIVa)- IF(sum(COBROS.Cobrado)>0.01,sum(COBROS.Cobrado), 0) ,2))>0

Pero no funciona. ¿Qué puedo hader?

seyko 26/03/2008 08:29

Re: Consulta condicional
 
no puedes utilizar un alias en el where.

WHERE ROUND( ((((FACTURACION.Importe_1+FACTURACION.Importe_2+FA CTURACION.Importe_3+FACTURACION.Importe_4+FACTURAC ION.ImpotroIVA)-(FACTURACION.Visados+FACTURACION.Retenciones))*((F ACTURACION.IVA/100)+1))+FACTURACION.ImpsinIVa)- IF(sum(COBROS.Cobrado)>0.01,sum(COBROS.Cobrado), 0) ,2)>0

Si lo dejas asi, le he quitado el parentesis que envuelve el round deberia funcionar.

Si no te funciona hazlo con una subconsulta, que quizas sea más rapido que meter todo el calculo en el where.


Salu2

monycaco 26/03/2008 13:39

Re: Consulta condicional
 
Lo he solucionado por medio de un CREATE TABLE y una segunda consulta, ya que la solución propuesta no me funciona y no consigo solucionarlo por medio de subconsulta.

Te agradeciría que me explicases lo de la subconsulta.

Unj saludo

seyko 27/03/2008 04:05

Re: Consulta condicional
 
BUenas, lo de crear una tabla no es buena solucion.

Subconsulta:
select sub.codigo, sub.pendiente
from
(
SELECT
FACTURACION.Codigo,
...
ROUND(((((....))))) as pendiente
FROM tus_tablas
WHERE ...
) sub
where sub.pendiente > 0;

Ahora si puedes utilizar pendiente.

Salu2

monycaco 27/03/2008 13:43

Re: Consulta condicional
 
Muchas Gracias.
De esta forma es realmente sencillo.


La zona horaria es GMT -6. Ahora son las 21:33.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.