वहाँ रहे हैं 2 टेबल - आदेश और 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;
काम खोजने के लिए है cus_no, order_num जहां आदेश अमान्य है में से एक के 3 स्थिति :
- pay_type है 'डिलीवरी पर नकद' - जब ऐसा होता है तो एक छद्म नाम स्तंभ टिप्पणी नहीं होना चाहिए संदेश 'इस आदेश के योग्य नहीं है के लिए कॉड'
- स्तंभ MFC रिक्त नहीं है - जब यह होता है तो एक छद्म नाम स्तंभ टिप्पणी नहीं होना चाहिए संदेश 'इस क्रम नहीं किया जा सकता है एक MFC'
- जब एक अतिरिक्त उत्पाद जोड़ा गया है, जो में सूचीबद्ध नहीं है config_check तालिका. यह एक कुछ स्पष्टीकरण की जरूरत. तो मैं अपनी पूरी कोशिश करेंगे ऊपर के साथ तालिका उदाहरण के लिए विस्तार से समझाओ । में config_check तालिका वहाँ रहे हैं 2 PROD_NOs (1000 और 1002) के लिए CHECK_TYPE 'अमान्य आदेश की जांच' शुरू कर दिया है जो 16-Nov-21. आज की तारीख है 21-NOV-2021. तो केवल उन 2 पंक्तियों माना जा सकता है, जहां आज की तारीख के बीच स्थित है शुरू और अंत की तारीख. अब क्रम संख्या 347 है एक उत्पाद की संख्या 1110 में नहीं है, जो config_check तालिका. ऐसे एक मामले में छद्म नाम स्तंभ टिप्पणी नहीं होना चाहिए संदेश 'गैर सूचीबद्ध आइटम नहीं किया जा सकता का आदेश दिया'.
मैं मिल गया है 1 2 स्थिति, लेकिन नहीं किया गया है प्राप्त करने में सक्षम 3 । यहाँ पर मेरा प्रयास है क्वेरी :
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);
ऊपर क्वेरी परिणाम देता है के रूप में :
- DZ-17T92 837 इस क्रम नहीं किया जा सकता है एक MFC
- KI-19A39 638 इस आदेश के योग्य नहीं है के लिए कॉड
के मामले में होना चाहिए, जब एक और खंड 3 के लिए स्थिति और एक ही में होना चाहिए bracketed और खंड पर पिछले. मैं नहीं मिल सकता है 3 की हालत मामले में ब्लॉक. कर सकते हैं किसी कृपया मेरी मदद वांछित परिणाम प्राप्त? वांछित उत्पादन किया जाना चाहिए
- DZ-17T92 837 इस क्रम नहीं किया जा सकता है एक MFC
- KI-19A39 638 इस आदेश के योग्य नहीं है के लिए कॉड
- एफटी-20U86 347 गैर सूचीबद्ध आइटम नहीं किया जा सकता का आदेश दिया
मदद के लिए देख या यहां तक कि संकेत होगा । पढ़ने के लिए धन्यवाद इस तरह के एक लंबे समय के बाद.
संपादित करें : मैं कर रहा हूँ परेशानी हो रही चिपकाने क्वेरी आउटपुट तालिका स्वरूप में. मैं का हिस्सा होगा उत्पादन में jpeg.