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是的,我只使用了一张表,这是相关的子查询库!这一定也行,但问题是我的表是临时的,所以从中选择两次有点困难。