oracle10g - Retrieving a row number of a specific row from a group of rows in a table in Oracle 10g -


मेरे पास ओरेकल 10 जी में USER_ROLES नामक सारणी है।

  USER_ROLE_ID USER_ID AUTHORITY 28 2 ROLE_ADMIN 45 3 ROLE_USER 61 3 ROLE_ASSISTANT 27 3 ROLE_SUPERVISOR   

कहां USER_ID तालिका का एक विदेशी कुंजी USER_TABLE < / code>। मुझे विशिष्ट उपयोगकर्ता ( USER_ID ) से जुड़े पंक्तियों के समूह से एक विशिष्ट पंक्ति की पंक्ति संख्या जानना होगा (और इस तालिका में सभी पंक्तियों के आधार पर नहीं)।


निम्न तालिका इस तालिका में सभी पंक्तियों के आधार पर दिए गए USER_ROLE_ID (28 इस मामले में) के लिए पंक्ति संख्या प्राप्त करती है।

  row_num से चुनें (user_role_id desc के अनुसार user_role का आदेश user_role_id desc के रूप में) user_role_id = 28   

यह पंक्ति 3, में यह मामला।


लेकिन पंक्तियों के एक समूह से पंक्ति संख्या को पुनः प्राप्त करने की आवश्यकता है जो केवल किसी विशिष्ट उपयोगकर्ता के साथ जुड़ा हुआ है। ऐसा होने के लिए, यदि मैं निम्न एसक्यूएल,

  को चुनें, पंक्ति_एनयूएम को चुनें (row_number () के ऊपर (user_role_id descending द्वारा क्रम) पंक्ति के रूप में पंक्ति_num, user_role_id से user_role का आदेश user_role_id desc) चुनें User_id = 2 और user_role_id = 28   

इस स्थिति में, मैंने WHERE खंड

  को संशोधित किया है जहां user_role_id = 28   

से

  जहां user_id = 2 और user_role_id = 28   

यह निम्न त्रुटि देता है।

  ORA-00904: "USER_ID": अमान्य पहचानकर्ता   

तो, केवल उन पंक्तियों से एक पंक्ति संख्या लाने का तरीका क्या है जो एक विशिष्ट उपयोगकर्ता से संबद्ध हैं , इस परिदृश्य में?

सिर्फ user_id को आंतरिक क्वेरी में जोड़ें मुझे लगता है कि यदि आप पंक्ति कोड को प्रति user_id के अनुसार चाहते हैं तो विश्लेषणात्मक विभाजन करना चाहते हैं: (

  से row_num चुनें (चुनें row_number () ) पर (user_role_id द्वारा उपयोगकर्ता_आईडी आदेश द्वारा विभाजन) row_num के रूप में, user_role_id, user_id से user_roles) जहां user_role_id = 28 और user_id = 2;    

Comments

Popular posts from this blog

excel vba - How to delete Solver(SOLVER.XLAM) code -

github - Teamcity & Git - PR merge builds - anyway to get HEAD commit hash? -

ios - Replace text in UITextView run slowly -