2012-11-26 9 views
5

あなたが知っているように、OracleはGROUP BY問合せでNULLを1つの "値"として扱います。 NULLをそれぞれ異なる値として扱うデータをグループ化するための回避策がありますか?たとえば、次のようにグループNULL可能な列によって

テーブル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 
012 LCの答え@
+0

です。 Thxそんなに。どのように私はそれをお見逃しですか? –

5

は素晴らしいものですが、ちょうどここではスポーツのための別の解決策です:

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

そしてhereは正しいsqlfiddleデモ

+0

でも、それは非常に正しいです:)しかし、Icの解決策は少し遅くなります。 –

関連する問題