sql - 按可为空的列分组

标签 sql oracle

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

提前致谢

最佳答案

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

关于sql - 按可为空的列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566117/

相关文章:

android - 如何获取具有相同列名的连接表的值?

sql - 获取每组预言机的最大值

oracle - 如何从 Delphi 调用 Oracle 函数?

sql - Oracle sql查询查找具有特殊字符作为值的列

.net - Oracle 和 SQL Server 中的长查询

sql - 按列分组,选择最新值

java - spring data jpa无法插入

sql - 选择时间为 30 分钟或更短的行?

sql - 数据仓库 - 营业时间

java - Oracle 10g 中使用哪种数据类型来存储 DateTime?