sql server - SQL - select distinct records in one field with highest records from another field -
ऐसे परिदृश्य में जहां मेरे पास ऐसा तालिका है:
int id (पीके) Int staff_id int skill_id bit mainskill
मैं प्रत्येक स्टाफ सदस्य के लिए केवल एक रिकॉर्ड का चयन करना चाहता हूँ (staff_id द्वारा दर्शाया गया है) अपने मुख्य कौशल को सूचीबद्ध करता है, जैसा कि (1) मेनसिल में दर्शाया गया है। यदि कोई मुख्य कौशल मौजूद नहीं है, तो मैं उस स्टाफ के सदस्य के लिए किसी भी कौशल रिकॉर्ड को वापस करना चाहता हूं। उदाहरण के लिए:
आईडी कर्मचारी_आईआईडी कौशल_आईडी माइंसस्किल 1 1 24 1 2 1 55 0 3 1 7 0 4 4 24 0 5 4 18 6 6 3 0 7 6 18 1
< / Pre>क्वेरी वापस करनी चाहिए:
id कर्मचारी_आईडी skill_id mainskill 1 1 24 1 4 4 24 0 7 6 18 1
मैंने समूहिंग, अलग आदि के विभिन्न संयोजनों की कोशिश की है, लेकिन बाद में मैं आउटपुट प्राप्त नहीं कर सकता। किसी भी मदद की सराहना की।
एसक्यूएल सर्वर 2005+, सीटीई का प्रयोग:
साथ पंक्तियों के साथ (चयन करें t.id, t.staff_id, t.skill_id, t.mainskill, ROW_NUMBER ()) (रैंक से t.staff_id आदेश द्वारा t.mainskill DESC द्वारा) रैंक से तालिका टी) चयन आर .id, r.staff_id, r.skill_id, r.mainskill rows r से WHERE r.rank = 1 ORDER द्वारा r.staff_id
SQL सर्वर 2005+, गैर-सीटीई समतुल्य: < / H2>
का चयन करें r.id, r.staff_id, r.skill_id, r.mainskill FROM (SELECT t.id, t.staff_id, t.skill_id, t.mainskill, ROW_NUMBER () ओवर (टी.टी.एफ.आई.आई.आई.एडी द्वारा टी। मेन्स्किल डीईएससी द्वारा आदेश) एए रैंक से तालिका में टी) आर जहां आर.आर.आर.के = 1 ORDER द्वारा आर.स्टाफ़_आईडी
का चयन करें r.id, r.staff_id, r.skill_id, r.mainskill FROM (SELECT t.id, t.staff_id, t.skill_id, t.mainskill, ROW_NUMBER () ओवर (टी.टी.एफ.आई.आई.आई.एडी द्वारा टी। मेन्स्किल डीईएससी द्वारा आदेश) एए रैंक से तालिका में टी) आर जहां आर.आर.आर.के = 1 ORDER द्वारा आर.स्टाफ़_आईडी
उपयोग दोनों, जो केवल उपलब्ध है SQL सर्वर 2005 के बाद से।
Comments
Post a Comment