/ / SQL सर्वर - दो कॉलमों द्वारा अलग-अलग पंक्तियों का चयन करें - sql, sql-server, sql-server-2012

एसक्यूएल सर्वर - दो कॉलम - एसक्यूएल, एसक्यूएल-सर्वर, एसक्यूएल-सर्वर -2012 द्वारा अलग पंक्तियों का चयन करें

मेरे पास निम्न प्रारूप है

Name   someString     theValue
abc    bla bla         3
abc    bla bla         3
abd    bla bla         5
abd    bla bla         5
xfz    ffs ds ds       50
xfz    ffs ds ds       50

अपेक्षित परिणाम:

Name   someString     theValue
abc    bla bla         3
abd    bla bla         5
xfz    ffs ds ds       50

इस प्रश्न का उपयोग करके मेरी समस्या को हल करने की कोशिश की:

Select Name, someString, theValue count(*) FROM myTable
GROUP BY Name, someString, theValue
HAVING count(*) = 1

यहां तर्क दिया जा रहा है: प्रत्येक पंक्ति को एक संख्या संख्या में जोड़ें, और केवल पहले एक का चयन करें जिसे पंक्तियों के सेट के अनुसार गिना गया था।

यह मेरा परिणाम 2160 पंक्तियों से 40 तक सिकुड़ता है, लेकिन अभी भी यहां डुप्लिकेट हैं।

मेरा सवाल यह है कि: क्या मैं प्रश्न क्वेरी में इस्तेमाल किया गया था (2 कॉलम द्वारा डुप्लिकेट पंक्तियों को फ़िल्टर करने के लिए), और क्या आपने इसे दूसरे तरीके से लिखा होगा?

SQL सर्वर 2012 का उपयोग करना

धन्यवाद

उत्तर:

जवाब के लिए 0 № 1

मैं सबसे सरल दृष्टिकोण के रूप में एक सरल एकत्रीकरण का सुझाव दूंगा:

select name, someString, min(theValue) as theValue
from t
group by name, someString;

उत्तर № 2 के लिए 1

निश्चित रूप से आप क्या करना चाहते हैं

SELECT DISTINCT Name, someString, theValue FROM myTable

या अगर आपको यह जानने की जरूरत है कि कितनी घटनाएँ हैं

SELECT Name, someString, theValue, Count(*) as ct FROM myTable GROUP BY Name, someString, theValue

उत्तर № 3 के लिए 1

आपके अपेक्षित आउटपुट के अनुसार यह क्वेरी बस के रूप में की जा सकती है

SELECT DISTINCT Name, someString, theValue
FROM myTable

परिणामसेट में नाम, someString, theValue का अलग संयोजन होगा।

यदि आप भी प्रत्येक संयोजन की गिनती चाहते हैं तो आप इसे लागू कर सकते हैं

SELECT Name, someString, theValue, count(*) combination_count
FROM myTable
GROUP BY Name, someString, theValue

जवाब के लिए 0 № 4

आपको बयानों द्वारा चयन और समूह दोनों से "theValue" को हटाने की आवश्यकता होगी।

आपके पास अलग-अलग नामों / someStrings के लिए ठीक से कई "theValue" हैं।


जवाब के लिए 0 № 5

यह एक लंबा शॉट हो सकता है, लेकिन आप सभी ने लिखा हैइस मुद्दे के बारे में पता चलता है कि ये डुप्लिकेट वास्तव में डुप्लिकेट नहीं हैं। शायद कुछ अनुगामी स्थान हैं जो परेशानी का कारण बनते हैं? उस स्थिति में, निम्नलिखित को काम करना चाहिए: SELECT DISTINCT RTRIM(name), RTRIM(someString), theValue FROM myTable;

यदि डुप्लिकेट के साथ समस्या वेव्यू के साथ है, तो आप उपयोग करने का प्रयास कर सकते हैं:

SELECT DISTINCT name, someString, first_value(theValue) over (partition by name, someString) FROM myTable;