2012-11-26 15 views
5

如您所知,Oracle將NULL視爲GROUP BY查詢中的一個「值」。是否有一種解決方法將分組的數據處理爲不同的值。例如:Group可空列

表t:

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

正確的。 Thx這麼多。我怎麼錯過了? –

5

@ LC的回答是一個偉大的,但只是這裏的運動是另一種解決方案:

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

而且here是sqlfiddle演示

+0

是的,這是非常正確的:)但是,慢一點,IC公司的解決方案。 –