SQL - Where con IF Ayuda !!!!

   
Vista:

Where con IF Ayuda !!!!

Publicado por Cristian (30 intervenciones) el 10/12/2011 19:03:19
Hola a todos... estoy haciendo la siguiente consulta para trabajar von VB:

SELECT * FROM ventasfinal where fecha between #" & Format(V_DESDE, "mm/dd/yyyy") & "# and #" & Format(V_HASTA, "mm/dd/yyyy") & "# and apenom='" & combocli.Text & "' and tipofac='B' and iva='RESP. INSCRIPTO' and facturado='NO' order by codart

Funciona bien.. lo unico que necesitaria filtrar dos campos mas pero solo si se cumple dos condiciones iguales no mostrarlos por ejemplo:

peso= 0 and pesofac= si

O sea que aparte de esa consulta, agregar que me obvie el registro cuando cumple estas dos condiciones: peso= 0 and pesofac= si

Espero haber sido claro...

Un saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

CASE WHEN THEN ELSE END

Publicado por xve (238 intervenciones) el 10/12/2011 21:58:49
Hola Cristian, creo que no te he entendido muy bien... es decir, no puedes poner unos campos si y otros no dependiendo de unas condiciones... puede hacer que te aparezcan con valor cero, null o cualquier cosa, pero si salen, salen siempre, sino, no salen nunca... no se si me he explicado bien...

Para hacer un condicional con SQL, se utiliza CASE WHEN... algo así:
1
2
3
4
SELECT
    campo1, campo2,
    CASE WHEN campo3>100 THEN 100 ELSE campo3 END as campo3
FROM Tabla

Este ejemplo, te mostrara los valores de campo1, campo2 y campo3, pero si campo3 es mayor que cien, devolvera 100.

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CASE WHEN THEN ELSE END

Publicado por Cristian (30 intervenciones) el 11/12/2011 14:18:44
Hola xve... muchas gracias por responder..

Si te entiendo, claro yo necesito mostrar los registros con determinadas condiciones, pero necesitaria que filtre si en dos campos cumplen determinadas condiciones.

Muchas gracias por tu respuesta.

Saludos
Cristian
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

CASE WHEN THEN ELSE END

Publicado por xve (238 intervenciones) el 11/12/2011 18:07:05
Lo que te faltaría entonces es ampliar el WHERE, no?... algo así:
1
2
3
4
5
SELECT * FROM ventasfinal
where
   (fecha between #" & Format(V_DESDE, "mm/dd/yyyy") & "# and #" & Format(V_HASTA, "mm/dd/yyyy") & "# and apenom='" & combocli.Text & "' and tipofac='B' and iva='RESP. INSCRIPTO' and facturado='NO')
   and (segundaCondicion)
order by codart

Coméntanos si esto te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CASE WHEN THEN ELSE END

Publicado por Cristian (30 intervenciones) el 12/12/2011 00:45:54
Hola otra vez xve...

Te explico aparte de los otros registros en la tabla de los que hablo y quiero filtrar son de la siguiente forma:

pesofac peso
NO 0
SI 0
SI 0,8

Entonces con este ejemplo yo quiero obviar los registros cuando el campo pesofac = SI y tambien cuando peso=0, pero solamente cuando los dos cumplen esa condicion.

Un saludo y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

CASE WHEN THEN ELSE END

Publicado por xve (238 intervenciones) el 12/12/2011 07:30:43
Seria algo así:
1
2
3
4
5
SELECT * FROM ventasfinal
where
   (fecha between #" & Format(V_DESDE, "mm/dd/yyyy") & "# and #" & Format(V_HASTA, "mm/dd/yyyy") & "# and apenom='" & combocli.Text & "' and tipofac='B' and iva='RESP. INSCRIPTO' and facturado='NO')
   and pesofac='NO' and peso <>0
order by codart

Esto deberia de mostrarte todos los registros que son NO y diferente de cero

Coméntanos si te sirvio, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CASE WHEN THEN ELSE END

Publicado por Cristian cristian_fg@hotmail.com (30 intervenciones) el 13/12/2011 01:39:10
Hola xve.. como estas ?

Bueno me sirvio al menos para verlo como ejemplo. Como quedamos te cuento de que manera me funciono:

SELECT * FROM ventasfinal
where

(fecha between #" & Format(V_DESDE, "mm/dd/yyyy") & "# and #" & Format(V_HASTA, "mm/dd/yyyy") & "# and apenom='" & combocli.Text & "' and tipofac='B' and iva='RESP. INSCRIPTO' and facturado='NO') and ((peso = 0 and pesofac='NO') or (peso <> 0 and pesofac='SI')) order by codart"

De esa forma cuando el campo peso = 0 y cuando pesofac='SI' no me lo muestra a ese registro.

Espero algun comentario....

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

CASE WHEN THEN ELSE END

Publicado por xve (238 intervenciones) el 13/12/2011 08:46:20
Hola Cristian, te agradezco que me lo hayas comentado.

Un saludo y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

CASE WHEN THEN ELSE END

Publicado por Cristian cristian_fg@hotmail.com (30 intervenciones) el 13/12/2011 13:08:19
Hola XVE... por favor... gracias a vos por la ayuda...

Nos mantenemos en contacto.
Saludos
Cristian
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar