如您所知,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
提前致谢
答案 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演示