Sql 按两列分组,其中一列不为空

Sql 按两列分组,其中一列不为空,sql,oracle,plsql,group-by,Sql,Oracle,Plsql,Group By,我有下表: c1 c2 1 5 1 6 2 5 2 null 3 null 3 null expected: 1 这是NxM表,其中N是c1的不同值的数量,M是c2的不同值的数量,因此,对于不同的c1,总是有相同数量的对(c1,c2) 我想从列С1中选择值,c2中没有一个对应的空值 我曾尝试使用(COUNT(*)=0)来执行GROUP BY(c1,null),但没有成功 如何操作?您可以按要区分的列进行分组,并且只取c2中没有NULL值的组。案例用于总

我有下表:

c1   c2
1    5
1    6
2    5
2    null
3    null
3    null

expected: 1
这是NxM表,其中N是c1的不同值的数量,M是c2的不同值的数量,因此,对于不同的c1,总是有相同数量的对(c1,c2)

我想从列С1中选择值,c2中没有一个对应的空值

我曾尝试使用(COUNT(*)=0)来执行GROUP BY(c1,null),但没有成功


如何操作?

您可以按要区分的列进行分组,并且只取
c2
中没有
NULL
值的组。
案例
用于总结这些条件

select c1
from your_table
group by c1
having sum(case when c2 is null then 1 else 0 end) = 0
用途不存在

select c1 from table_name t1
where not exists ( select 1 from table_name t2 where t1.c1=t2.c1 
                               and t2.c2 is null)

除了已经给出的答案外,您还可以使用
NOT IN
操作符实现以下结果:

Select distinct c1 from your_table
Where c1 not in 
(select t.c1 from your_table t
Where t.c2 is null 
and t.c1 is not null);
干杯

从表1中选择c1
其中c2不为空

这是另一种方法

select c1
from your_table
group by c1
having count(c1)=count(c2);

你的t2号桌在哪里?只有一张有2个座位的桌子columns@e.e是的,我只使用了一张表,这是相关的子查询库!这一定也行,但问题是我的表是临时的,所以从中选择两次有点困难。