Sunday, 15 June 2014

Case statement in Oracle for selecting single row -


मेरे पास निम्न डेटा के साथ एक तालिका 'tblA' है:

  wuser_id wcomatted wstatusdate 123 1 10212014 123 0 11212014 456 0 02222014 456 0 03122014 मैं wsatusdate wuser_id '123' के लिए wcompleted के आधार पर चयन करना चाहते हैं, जब कम 1 है तो मुझे केवल '10212014' चुनना होगा, के लिए '456' जब कम हो तो 0 है तो मुझे केवल '03122014' को चुनना होगा मुझे नीचे दिए गए प्रश्न, user_is 123 के लिए दो पंक्तियों को लौट रहा है।  

नीचे मैं जो कर रहा हूं,

  अलग wuser_id का चयन करें, जब 1 से अधिकतम (wstatusdate) 0 तब अधिकतम (wstatusdate) tblA समूह से wuser_id, wcompleted  

परिणाम:

  wuser_id wstatusdate 123 10212014 123 11212014 456 03122014  < / Pre> 

मुझे परिणाम होने की आवश्यकता है:

  wuser_id wstatusdate 123 10212014 456 03122014  

आप निम्न की तरह कुछ प्रयास कर सकते हैं:

  SELECT wuser_id, wcomatted, wstatusdate FROM (SELECT wuser_id, wcompleted, wstatusdate, ROW_NUMBER () ओवर ( WUSER_ID द्वारा विभाजन द्वारा अधूरा डीईएससी, डब्लूएसएटीएसएडी डीईएससी) एएस आर एन एफएलए द्वारा) जहां आरएन = 1;  

या आप निम्न कार्य कर सकते हैं:

  SELECT wuser_id, MAX (wcompleted) के रूप में wcompleted, MAX (wstatusdate) KEEP (DENSE_RANK फर्स्ट ऑर्डर वाईफप्लेटेड डीईएससी ) के रूप में टीबीए ग्रुप द्वारा wuser_id से wstatusdate;  

No comments:

Post a Comment