2012-11-26 12 views
5

जैसा कि आप जानते हैं कि ओरेकल ग्रुप बाय प्रश्नों में एक "मान" के रूप में NULLs का व्यवहार करता है। क्या एनयूएलएल को अलग-अलग मूल्यों के रूप में समूहित करने वाले समूह डेटा के लिए एक समाधान समाधान है।समूह एक शून्य कॉलम

तालिका टी:

colA  colB 
A   1 
A   5 
<null>  3 
<null>  2 

select colA, min(colB) from t group by colA रिटर्न:

colA  colB 
A   1 
<null>  2 

लेकिन मैं एक प्रश्न लौटना चाहते: उदाहरण के लिए

colA  colB 
A   1 
<null>  3 
<null>  2 

अग्रिम धन्यवाद

उत्तर

6
SELECT colA, MIN(colB) 
FROM t 
WHERE colA IS NOT NULL 
GROUP BY colA 
UNION ALL 
SELECT colA, colB 
FROM t 
WHERE colA IS NULL 
+0

सही है। बहुत बहुत धन्यवाद। मुझसे यह चूक कैसे हुई? –

5

@ नियंत्रण रेखा के जवाब के लिए एक महान एक है, लेकिन सिर्फ खेल यहाँ के लिए एक और उपाय है:

SELECT colA, min(colB) 
FROM t 
GROUP BY nvl(colA, rownum),colA 

और here एक sqlfiddle डेमो

+0

हाँ, यह भी बहुत सही है :) हालांकि आईसी का समाधान थोड़ा धीमा है। –