分组由可空列组成

Ogu*_*urt 5 sql oracle

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

表t:

colA     colB
 A         1 
 A         5 
<null>     3 
<null>     2
Run Code Online (Sandbox Code Playgroud)

select colA, min(colB) from t group by colA 收益:

colA     colB
 A         1 
<null>     2
Run Code Online (Sandbox Code Playgroud)

但我想要一个返回的查询:

colA     colB
 A         1 
<null>     3 
<null>     2
Run Code Online (Sandbox Code Playgroud)

提前致谢

lc.*_*lc. 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
Run Code Online (Sandbox Code Playgroud)


A.B*_*ade 5

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

SELECT  colA, min(colB)
FROM t
GROUP BY nvl(colA, rownum),colA
Run Code Online (Sandbox Code Playgroud)

这里是一个sqlfiddle演示