मेरे पास निम्न प्रारूप है
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;