如果存在多个空值,则选择具有相同id而没有空值的行和一行具有Null的行

时间:2015-05-06 04:43:50

标签: oracle database-performance query-performance

我想只获取具有值的行以及特定用户名列的NULL以外的其他值。

如果两个行对于该特定用户名都为null,则它应该在输出中仅显示Null一次。如果同一用户名的行数超过两行且为null,则显示该值仅为空。

下面是示例示例和输出。如何使用sql查询完成?

表:

Col1     |     Col2 
-------------------------
 a       |     abc        
 a       |      bc  
 b       |     null        
 b       |     null          
 c       |      der
 c       |     null    

输出:

    Col1     |     Col2 
  -------------------------
     a       |     abc        
     a       |      bc  
     b       |     null         
     c       |      der

3 个答案:

答案 0 :(得分:1)

概述这个想法,可能会有一些语法错误,无法访问oracle。

SELECT * FROM 

   ( SELECT DISTINCT USERNAME FROM <TABLE> ) USERS

LEFT OUTER JOIN 

   ( SELECT USERNAME, COL2 FROM <TABLE> WHERE COL2 IS NOT NULL) USERS_COL2

ON 
    USRES.USERNAME = USERS_COL2.USERNAME

答案 1 :(得分:0)

你使用listagg()或stragg()

drop table test; 
create table test (
col1 varchar2(10),
col2 varchar2(10)
);

insert into test values ( 'a','abc');
insert into test values ( 'a','abc');
insert into test values ( 'b',null);
insert into test values ( 'b',null);
insert into test values ( 'c','der');
insert into test values ( 'c',null);
commit;


select  col1,
listagg (col2,',')  within group (order by col1) col2
from test
group by col1;

COL1       COL2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
---------- -----------
a          abc,abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
b                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
c          der   

select col1,  stragg (col2) 
    from test
    group by col1;

答案 2 :(得分:0)

select  col1, col2, count(*)
from omc.test
group by col1,col2;

你可以删除count(*)