6

如您所知,Oracle 在 GROUP BY 查询中将 NULL 视为一个“值”。是否有一种解决方法来分组数据,将 NULL 视为不同的值。例如:

药片:

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

提前致谢

4

2 回答 2

7
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
于 2012-11-26T13:47:28.953 回答
6

@lc 的回答很好,但仅针对这项运动,这里有另一种解决方案:

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

这是一个sqlfiddle演示

于 2012-11-26T14:28:26.683 回答