Hay 2 mesas de pedidos y config_check.
create table orders (order_created date,
cus_no varchar2(20),
order_num number,
pay_type varchar2(30),
MFC date,
prod_no varchar2(15) );
create table config_check (check_type varchar2(100),
field_name varchar2(10),
field_value varchar2(15),
start_date date,
end_date date
);
insert into orders values ('20-NOV-21', 'GT-19Y67', 489, 'Credit Card', NULL, '1000');
insert into orders values ('07-OCT-21', 'NU-20D73', 567, 'Cash on Delivery', '14-OCT-21', '1001');
insert into orders values ('17-NOV-21', 'JP-16V81', 789, 'Cash on Delivery', NULL, '1101');
insert into orders values ('20-NOV-21', 'DZ-17T92', 837, 'Net Banking', '23-NOV-21', '1002');
insert into orders values ('16-SEP-21', 'RJ-18W107', 124, 'Cash on Delivery', NULL, '1002');
insert into orders values ('18-NOV-21', 'KI-19A39', 638, 'Cash on Delivery', NULL, '1000');
insert into orders values ('19-NOV-21', 'FT-20U86', 347, 'Net Banking', NULL, '1002');
insert into orders values ('19-NOV-21', 'FT-20U86', 347, 'Net Banking', NULL, '1110');
insert into config_check VALUES ('Invalid Orders Check', 'PROD_NO', '1000', '16-NOV-21', '30-NOV-21' );
insert into config_check VALUES ('Invalid Orders Check', 'PROD_NO', '1101', '08-SEP-21', '21-SEP-21' );
insert into config_check VALUES ('Invalid Orders Check', 'PROD_NO', '1002', '16-NOV-21', '30-NOV-21' );
insert into config_check VALUES ('Cust Bday Offer', 'CUST_NO', '845796', '13-AUG-21', '23-AUG-21' );
commit;
La tarea es encontrar cus_no, order_num donde el orden no es válida en una de las 3 condiciones :
- pay_type es en Efectivo a la Entrega' - cuando esto sucede, un pseudo columna denominada comentarios debe tener el mensaje "Esta orden no califican para el Bacalao'
- columna de MFC no es nulo cuando esto sucede, un pseudo columna denominada comentarios debe tener el mensaje "Este orden no puede ser un MFC'
- cuando un producto adicional se agrega que no está incluida en config_check tabla. Esto necesita alguna explicación. Así que voy a intentar mi mejor esfuerzo con el de arriba de la tabla de ejemplos para explicar en detalle. En config_check mesa hay 2 PROD_NOs (1000 y 1002) para CHECK_TYPE no es Válido "los Pedidos de Verificación", que comenzó el 16-Nov-21. Hoy en día, la fecha es el 21-NOV-2021. Tan sólo esas 2 filas puede ser considerado donde la fecha de hoy se encuentra entre la fecha de inicio y fin. Ahora el número de orden de 347 tiene un número de producto 1110 que no está en config_check tabla. En tal caso, el pseudo columna denominada comentarios debe tener el mensaje de 'No de los elementos de la lista no puede ser ordenado".
Tengo la 1 de 2 condiciones, pero no han sido capaces de llegar a la 3ª. Aquí está mi intento en la consulta :
select o.CUS_NO, o.ORDER_NUM,
CASE
WHEN o.pay_type = 'Cash on Delivery' THEN 'This order does not qualify for Cod'
WHEN o.MFC IS NOT NULL THEN 'This order can not be an MFC'
END comments
from orders o INNER JOIN
( select * from config_check where check_type = 'Invalid Orders Check' and sysdate between start_date and end_date) c
ON (o.prod_no = c.field_value)
where o.ORDER_CREATED > c.start_date
AND (o.pay_type = 'Cash on Delivery' OR o.MFC IS NOT NULL);
La consulta anterior da el resultado como :
- DZ-17T92 837 Este orden no puede ser un MFC
- KI-19A39 638 Esta orden no califican para el Bacalao
El Caso debe tener otro CUANDO la cláusula de la 3ª condición y la misma debe ser en el que figura entre corchetes, Y la cláusula en la última. No puedo conseguir la 3ª condición en el CASO del bloque. Por favor alguien puede ayudarme a conseguir el resultado deseado? La salida deseada debe ser
- DZ-17T92 837 Este orden no puede ser un MFC
- KI-19A39 638 Esta orden no califican para el Bacalao
- FT-20U86 347 No una lista de los artículos pueden no ser ordenado
Buscando ayuda o incluso punteros será grande. Gracias por leer un mensaje tan largo.
Edit : estoy teniendo problemas para pegar el resultado de la consulta en formato de tabla. Voy a compartir el resultado en formato jpeg.