Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 26-mar-2008, 06:30   #1 (permalink)
monycaco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 9
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?
monycaco está desconectado   Responder Citando
Antiguo 26-mar-2008, 08:29   #2 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.038
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
seyko está desconectado   Responder Citando
Antiguo 26-mar-2008, 13:39   #3 (permalink)
monycaco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 9
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
monycaco está desconectado   Responder Citando
Antiguo 27-mar-2008, 04:05   #4 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.038
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
seyko está desconectado   Responder Citando
Antiguo 27-mar-2008, 13:43   #5 (permalink)
monycaco ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Re: Consulta condicional

Muchas Gracias.
De esta forma es realmente sencillo.
monycaco está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 02:33.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93