当组中的单个项目为空时,如何保留分组项目。
例如:
Col1 Col2
A 1
A null
B 3
B 3
C 2
C null
C null
D 2
D 4
D 9
D 2
So the output :
B
D
我尝试将至少有一条记录的组排除为null。
任何帮助?
答案 0 :(得分:3)
和另一个:
SELECT
col1
FROM TheTable
MINUS
SELECT
col1
FROM TheTable
WHERE col2 IS NULL
;
答案 1 :(得分:2)
我喜欢MINUS
(没有两个DISTINCT
s)的答案,因为它很干净。但是,如果您只想访问一个表并拥有简单的SQL,那么请转到HAVING
:
SQL> create table mytable (col1,col2)
2 as
3 select 'A', 1 from dual union all
4 select 'A', null from dual union all
5 select 'B', 3 from dual union all
6 select 'B', 3 from dual union all
7 select 'C', 2 from dual union all
8 select 'C', null from dual union all
9 select 'C', null from dual union all
10 select 'D', 2 from dual union all
11 select 'D', 4 from dual union all
12 select 'D', 9 from dual union all
13 select 'D', 2 from dual
14 /
Table created.
SQL> select col1
2 from mytable
3 group by col1
4 having count(*) = count(col2)
5 /
C
-
D
B
2 rows selected.
此解决方案依赖于众所周知的事实,即聚合函数COUNT不计算NULL值。
答案 2 :(得分:1)
您可以提前排除[{1}} Col1
null
的{{1}}值:
col2