sql server 2005 - Reduce and Merge duplicate rows -


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

  नाम रंग ऐलिस ग्रीन बॉब ब्लैक क्रिस ग्रीन क्रिस ब्लैक डेविड रेड पीटर ब्लू साइमन ब्लू साइमन रेड साइमन ग्रीन  

अंततः, मैं रंग कॉलम को मजबूत करके तालिका को कम करना चाहता हूं:

   

ऐसा नाम है कि अद्वितीय हो सकता है।

तालिका में कोई प्राथमिक नहीं है कुंजी, मैं जहां तक ​​डुप्लिकेट को अलग करने के लिए ROW_NUMBER का उपयोग करके एक नया कॉलम बना रहा हूं, लेकिन मुझे नहीं पता कि आगे क्या करना है।:

  rownumber नाम रंग 1 ऐलिस ग्रीन 1 बॉब ब्लैक 1 क्रिस ग्रीन 2 क्रिस ब्लैक 1 डेविड रेड 1 पीटर ब्लू 1 साइमन ब्लू 2 साइमन रेड 3 साइमन ग्रीन    

ऐसा मत करो इसके बजाय, अपने टेबल को सामान्य करने के लिए आगे। एक व्यक्ति, वरीयता और एक रंगीन तालिका (जहां वरीयता, यदि वह संबंध के लिए सही नाम है, व्यक्ति और रंग के लिए विदेशी कुंजी है)। इस तरह, आप विसंगतियों के जोखिमों से बचते हैं (यदि आप चाहें तो व्यक्ति नाम अद्वितीय बना सकते हैं, लेकिन आप चाहिए रंग के नामों को अद्वितीय बनाते हैं)।

संपादित करें: यदि आप इसे जोड़ने की क्वेरी से प्राप्त कर रहे हैं तो मुझे लगता है कि डेटा उचित रूप से अनुरूप है, इसलिए सामान्यीकरण कोई समस्या नहीं है। क्या इसके बजाय नाम पर क्वेरी को शामिल करना संभव होगा? वास्तव में एक परिणाम सेट के आसपास हैकिंग की तुलना में बहुत क्लीनर!


Comments