Oracle SQL मामले में बयान छद्म स्तंभ

0

सवाल

वहाँ रहे हैं 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 स्थिति :

  1. pay_type है 'डिलीवरी पर नकद' - जब ऐसा होता है तो एक छद्म नाम स्तंभ टिप्पणी नहीं होना चाहिए संदेश 'इस आदेश के योग्य नहीं है के लिए कॉड'
  2. स्तंभ MFC रिक्त नहीं है - जब यह होता है तो एक छद्म नाम स्तंभ टिप्पणी नहीं होना चाहिए संदेश 'इस क्रम नहीं किया जा सकता है एक MFC'
  3. जब एक अतिरिक्त उत्पाद जोड़ा गया है, जो में सूचीबद्ध नहीं है 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);

ऊपर क्वेरी परिणाम देता है के रूप में :

  1. DZ-17T92 837 इस क्रम नहीं किया जा सकता है एक MFC
  2. KI-19A39 638 इस आदेश के योग्य नहीं है के लिए कॉड

enter image description here

के मामले में होना चाहिए, जब एक और खंड 3 के लिए स्थिति और एक ही में होना चाहिए bracketed और खंड पर पिछले. मैं नहीं मिल सकता है 3 की हालत मामले में ब्लॉक. कर सकते हैं किसी कृपया मेरी मदद वांछित परिणाम प्राप्त? वांछित उत्पादन किया जाना चाहिए

  1. DZ-17T92 837 इस क्रम नहीं किया जा सकता है एक MFC
  2. KI-19A39 638 इस आदेश के योग्य नहीं है के लिए कॉड
  3. एफटी-20U86 347 गैर सूचीबद्ध आइटम नहीं किया जा सकता का आदेश दिया

enter image description here

मदद के लिए देख या यहां तक कि संकेत होगा । पढ़ने के लिए धन्यवाद इस तरह के एक लंबे समय के बाद.

संपादित करें : मैं कर रहा हूँ परेशानी हो रही चिपकाने क्वेरी आउटपुट तालिका स्वरूप में. मैं का हिस्सा होगा उत्पादन में jpeg.

case oracle sql
2021-11-20 20:21:40
1
0

आप का उपयोग किसी हालत में मामले में बयान.

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'
        enter code here    **ELSE 'Non listed item can not be ordered'**                
       END as  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);
2021-11-22 04:49:36

मैं था प्राप्त करने में सक्षम नहीं है कि <कोड दर्ज उसे> हिस्सा है ।
Arty155

मैं मिल गया है क्वेरी का चयन करें: o1.cus_no, o1.order_num, 'गैर सूचीबद्ध आइटम नहीं किया जा सकता का आदेश दिया' com से आदेश o1 जहां मौजूद है ( से 1 का चयन करें का चयन करें (o.* से आदेश ओ अंदरूनी JOIN ( का चयन करें * से config_check जहां check_type = 'अमान्य आदेश की जाँच करें' और sysdate के बीच start_date और end_date) सी (ओ.prod_no = सी.field_value) कहाँ हे.ORDER_CREATED > सी.start_date) मैं जहाँ मैं.ORDER_NUM = o1.ORDER_NUM और o1.prod_no में नहीं का चयन करें (FIELD_VALUE से config_check जहां check_type = 'अमान्य आदेश की जाँच करें' और sysdate के बीच start_date और end_date) ) ; हो जाता है, जो मुझे क्रम संख्या 347
Arty155

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में