से 1 का चयन करें मेरे पास डेटा का एक सेट है और प्रत्येक CON/OWNER/METHOD/MATRIX सेट के लिए एक रिकॉर्ड खींचने की आवश्यकता है। यदि कोई गैर-शून्य परिणाम है, तो मैं उसे चाहता हूं। अन्यथा, मैं सबसे ज्यादा COUNT वाला एक चाहता हूं। मैं यह कैसे पूछूं?SQL सर्वर क्वेरी प्रत्येक उप-समूह
CON OWNER METHOD MATRIX RESULT COUNT
*CON_1 OWNER_1 METHOD_A SOLID NULL 503
CON_1 OWNER_1 METHOD_A SOLID NULL 1
*CON_1 OWNER_1 METHOD_A SOIL NULL 1305
CON_1 OWNER_1 METHOD_A SOIL NULL 699
*CON_2 OWNER_2 METHOD_B SOLID 290 687
CON_2 OWNER_2 METHOD_B SOLID NULL NULL
CON_2 OWNER_2 METHOD_B SOLID 450 600
CON_2 OWNER_2 METHOD_B WATER NULL 1
*CON_2 OWNER_2 METHOD_B WATER 400 NULL
एक परिणाम के लिए
, मैं सिर्फ तारांकित रिकॉर्ड चाहते हैं, और मैं दिखा रहा हूँ कि कैसे प्रत्येक सेट वर्गीकृत किया जाता है।
यह बुरा एसक्यूएल है:
select top (1) CON, OWNER, METHOD, MATRIX, RESULT, COUNT
from #TempTable
group by CON, OWNER, METHOD, MATRIX
order by CON, OWNER, METHOD, MATRIX, COUNT
... क्योंकि मेरे गिनती में समेकित फ़ंक्शन का हिस्सा नहीं है। न ही यह परिणाम नल के साथ सौदा करता है या नहीं, और शीर्ष (1) प्रत्येक समूह से 1 वापस नहीं करेगा। हालांकि, मुझे अधिक जटिल क्वेरी (जैसे How can I select multiple columns from a subquery (in SQL Server) that should have one record (select top 1) for each record in the main query? पर प्रश्न के आधार पर)
मैं प्रत्येक समूह से एक का चयन कैसे करूं?
यह चुनना मुश्किल है कि @siva, @Paul Creasey, या @Andrew Lazarus को स्वीकार करना है। सभी मदद की। एंड्रयू का प्रारंभिक और अच्छी तरह से स्वरूपित था और बेहतर सॉर्टिंग था; शिव के पास टी 1 था। अंत में रैंकिंग क्वालीफायर; और पॉल पहले था और मुझे जाने के लिए मिला। मैंने सभी को अपवित्र दिया, और चूंकि पॉल थोड़ा आगे है, मैं इसे स्वीकार करूंगा। लेकिन सभी योग्य हैं। – thursdaysgeek