Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como Validar Filas en Select? (https://www.clubdelphi.com/foros/showthread.php?t=28500)

AGAG4 21-12-2005 17:11:06

Como Validar Filas en Select?
 
Hago 4 consultas unidas con UNION.
Código SQL [-]
//Ventas de Contado
select SUM(IMPORFAC) from facturas
where
credcon=1 and
fechafac>='01.04.2005' and
fechafac<='30.04.2005'
UNION
 
//Ventas de Credito
select SUM(IMPORFAC) from facturas
where
credcon=2 and
fechafac>='01.04.2005' and
fechafac<='30.04.2005'
UNION
 
//Notas de Crédito
select SUM(IMPMOV) from climovim
where
(tipomov='NX' or tipomov='NM') and
fechamov>='01.04.2005' and
fechamov<='30.04.2005'
UNION
//Devoluciones
select SUM(IMPORTE) from invmovim
where
(tipomov='DX' or tipomov='DM') and
fechamov>='01.04.2005' and
fechamov<='30.04.2005'
En estas sentencias me muestra 4 FILAS:
1,200
2,200
500
200

Estan perfectas las consultas, pero tengo el problema que si no hay ventas de crédito me pone:
1,200
500
200

No puedo diferenciar entre las filas si no hay Ventas de Crédito o bien no hubiese Notas de Crédito, me gustaría que en vez de que no muestre nada me muestre un CERO asi yo saber de que no hubo Ventas de Crédito ejemplo:
1,200
0
500
200

Ya probe con
Código SQL [-]
 
....
select SUM(case when (IMPORTE=0 or IMPORTE is Null ) then 0.00 end) from tinv_invmovim
....
Pero de todas formas me devuelve 3 filas, no me muestra en la FILA un CERO para identificar.

Agradezco cualquier sugerencia.

Neftali [Germán.Estévez] 21-12-2005 17:34:10

Revisa si puedes utilizar el operador IF/CASE/ISNULL dentro de la consulta (algunos SGBD lo tienen).

Por ejemplo en SQL Server podrías usar:

Código SQL [-]
// Si el valor es nulo te devolvería un 0
select IsNull(SUM(IMPORFAC),0) from facturas

// Algo similar, pero con el CASE
select 
case when SUM(IMPORFAC) is null then 0 else SUM(IMPORFAC) end 
from facturas

AGAG4 21-12-2005 22:40:03

ok
 
Gracias Neftali voy a probarlo....

Saludos....

AGAG4 21-12-2005 22:52:16

Resultados
 
Cita:

Empezado por Neftali
Revisa si puedes utilizar el operador IF/CASE/ISNULL dentro de la consulta (algunos SGBD lo tienen).

Por ejemplo en SQL Server podrías usar:

Código SQL [-]
// Si el valor es nulo te devolvería un 0
select IsNull(SUM(IMPORFAC),0) from facturas
 
// Algo similar, pero con el CASE
select 
case when SUM(IMPORFAC) is null then 0 else SUM(IMPORFAC) end 
from facturas

En el Primer Ejemplo que me comenta me marca error en IsNull
En el segundo Casi se Aproxima, aqui el problema que tengo es que si de las 4 consultas las 2 del medio son nulas solo me pone:
0.00
1,200
200

En vez de poner
1,200
0.00
0.00
200

O bien si en alguna consulta es nula pone al principio los ceros
0.00
2,200
500
200

Gracias por sus sugerencias.

Paoti 22-12-2005 20:22:08

coalesce
 
¡Hola!

haber si funciona esto:

Código SQL [-]
select SUM(COALESCE(IMPORFAC)), 1 from facturas
where
credcon=1 and
fechafac>='01.04.2005' and
fechafac<='30.04.2005'
UNION
...
UNION
...
UNION
...
ORDER BY 2



COALESCE() <--- Em caso de que el campo sea nulo, lo remplaza por el valor 0. ahora la segunda columna es un 1, en el siguiente SELECT, ponerlo 2, etc...

y al final hacer or ORDER BY por la columna dos.



se me ocurrio al vuelo está solución, espero cumpla su cometido de darle solución a tu problema.



NaCl-U2

AGAG4 23-12-2005 00:16:04

Ok
 
Gracias Paoti voy a probarlo....

AGAG4 23-12-2005 00:25:44

Excelente
 
Gracias Paoti me Sirvio mucho, no me pone el campo en Ceros, pero eso no importa cuando menos los voy a identificar con un Número que es lo que principalmente quería IDENTIFICARLOS.

Que tengas buen día.

Felices Fiestas!!!!

Paoti 23-12-2005 00:31:57

Coalesce con SUM SQL
 
Que bueno que te funciono....


Ahora prueba al revez...



Coalesce(Sum(Campo)) From



Aunque deberia de funcionar cómo esta el ejemplo.


jajaj, perdón, ya me di cuenta del error. es este:



Voy a dejar le texto de arriba porque ya lo escribi.

:p


es así

Código SQL [-]
select SUM(COALESCE(IMPORFAC),0), 1 from facturas
where
credcon=1 and
fechafac>='01.04.2005' and
fechafac<='30.04.2005'
UNION
...
UNION
...
UNION
...
ORDER BY 2


select SUM(COALESCE(IMPORFAC),0), <--- AQUI ESTA.




NaCL-U2

AGAG4 23-12-2005 02:06:31

Gracias
 
Gracias Paoti, no se que estará pasando ya probe de la última forma pero sigue saliendo Nulo el campo, pero ese ya no es problema como le comente arriba con sólo identificar el registro sobra y basta.

Gracias de antemano.:)

AGAG4 30-12-2005 20:05:19

Gracias Paoti
 
Siempre si ocupe el registro en CEROS y tenía un pequeño error al poner la instrucción COALESCE pero ya me funcionó .


Saludos....:)


La franja horaria es GMT +2. Ahora son las 10:29:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi