Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Duda registros valor 0 sql (https://www.clubdelphi.com/foros/showthread.php?t=54244)

drykea 12-03-2008 16:10:14

Duda registros valor 0 sql
 
Buenas tardes.

Tengo un problemilla al hacer una consulta en sql server.
Tengo una tabla con 4 columnas, C1, C2, C3 y C4 de las cuales algunas pueden tener valor 0.

Lo que quiero es calcular el minimo de dos de ellas sin que tenga en cuenta el 0.
Si pongo en la condicio C2 <> 0, no tiene en cuenta el registro entero, es decir tampoco tiene en cuenta el valor de C3 para calcular el minimo y yo quiero que lo cuente.

P.ej.
C1:nombre1, C2:0 C3:1
C1:nombre2, C2:10 C3:2
C1:nombre3, C2:2 C3:4

Quiero que me devuelva Minimo de C2:2 y Minimo de C3:1

Gracias por su ayuda

espericueta 12-03-2008 17:10:05

Max,min
 
prueba con select min(c2) as MinimoC2,min(c3) as MinimoC3 from tutabla
where c2<>0 and c3 <> 0

drykea 12-03-2008 17:37:42

Gracias por contestar.

Pero eso no me sirve, porque si uno de los dos es 0 me excluye el registro entero, tanto el valor de C2 como el de C3 y yo quiero que el que no sea 0 si lo tenga en cuenta. :(

keyboy 12-03-2008 17:42:31

No me gusta mucho esta solución porque a fin de cuentas son dos consultas disfrazadas de una sola, pero mientras encuentras algo mejor:

Código SQL [-]
select min(C2) from tabla where C2 <> 0

union

select min(C3) from tabla where C3 <> 0

En lugar de un registro con dos campos, obtendrás dos registros con un sólo campo, que será el mínimo correspondiente.

Bye

drykea 13-03-2008 09:41:58

Gracias pero no me sirve, necesito los campos en el mismo registro.

Ivanzinho 13-03-2008 14:58:52

No sé como se hace en sql server, ni si esto funcionará, pero en firebird se haría de la siguiente manera:

Código SQL [-]
Select MinC2, MinC3 
from(
    (Select min(C2) from tabla where C2 <> 0) MinC2,
    (Select min(C3) from tabla where C3 <> 0) MinC3)


Un saúdo.

Paulao 13-03-2008 17:43:52

No se se dara resultado, pero intenta asi:

SELECT
ZERO_C2,
TUDO_C2,
FROM
TBLC1
LEFT JOIN
(SELECT KEY,C2 FROM TBLC2 WHERE C2 = 0)ZERO_C2
ON(MINC2.KEY = TBLC1.KEY)
LEFT JOIN
(SELECT KEY,MIN(C2) FROM TABELA WHERE C2 <> 0)TUDO_C2
ON(TUDO_C2.KEY = TBLC1.KEY)


La franja horaria es GMT +2. Ahora son las 06:09:34.

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