2012-11-26 25 views
5

Bildiğiniz gibi Oracle GROUP BY sorgularında NULL'leri bir "değer" olarak değerlendirir. NULL'ları her biri için farklı değerler olarak ele alan veri grubuna yönelik bir geçici çözüm var mı?Grup Null sütun

tablo t:

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

select colA, min(colB) from t group by colA döner:

colA  colB 
A   1 
<null>  2 

ama bir sorgu dönmek istiyorum: Örneğin önceden

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

Teşekkür

cevap

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 
012 LC cevabı @
+0

Doğru bir sqlfiddle demo. Çok teşekkür ederim. Bunu nasıl özledim? –

5

büyük bir olmakla birlikte, sadece burada spor için başka çözüm:

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

Ve here

+0

Evet, bu çok doğrudur :) Ancak Ic'nin çözümü biraz yavaş. –

İlgili konular