Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/05/2018, 11:40
MarioHeredia
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años
Puntos: 3
Respuesta: Consulta que un solo producto cumpla con la condicion

Lo solucionaria usando otra tabla.

Una tabla de filtros... que tenga PRODUCTO y CUENTAS_VENCIDAS.
Y cada registro en la tabla es una condicion que debe ser filtrada.

Mencionaste el producto 8021 con dos cuentas vencidas como primera condicion de filtro.
Y todos los productos que tengan cero cuentas vencidas como segunda condicion de filtro.

Facil!

Primero cargas el producto 8021 y en la columna cuentas vencidas cargas un 2.
Luego, en el segundo caso, dejas vacia la columna producto y en la columna cuentas vencidas cargas un 0.

Importante! Dejando la columna vacia en la columna producto, no estas especificando a ningun producto en particular, por lo tanto, los estas seleccionando a todos.

Código SQL:
Ver original
  1. SELECT PRODUCTO,
  2.        CUENTAS_VENCIDAS
  3.   FROM (
  4. SELECT P.PRODUCTO,
  5.        P.CUENTAS_VENCIDAS,
  6.        DECODE(R.PRODUCTO, NULL, DECODE(R.CUENTAS_VENCIDAS, NULL, 'DISABLED', 'ENABLED'), 'ENABLED') FLAG
  7.   FROM PRODUCTOS P,
  8.        PRODUCTOS_RFRC R
  9.  WHERE NVL(R.PRODUCTO, P.PRODUCTO) = P.PRODUCTO
  10.    AND NVL(R.CUENTAS_VENCIDAS, P.CUENTAS_VENCIDAS) = P.CUENTAS_VENCIDAS
  11.        )
  12.  WHERE FLAG = 'ENABLED'

Este modelo tambien te podria servir cuando quieras por ejemplo, filtrar un producto puntual sin importar sus cuentas vencidas.

El concepto del FLAG es muy sencillo.
Cuando cruce la tabla de referencia con la tabla de productos, voy a marcar con una flag las coincidencias y luego me quedaria con ellas.

Cualquier duda, vuelves a escribir.
Saludo grande,
Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.