分组由可空列组成

时间:2012-11-26 13:45:06

标签: sql oracle

如您所知,Oracle将NULL视为GROUP BY查询中的一个“值”。是否有解决方法将数据分组,将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

提前致谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

@ lc的答案很棒,但这项运动只是另一种解决方案:

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

here是一个sqlfiddle演示

相关问题