SQL查询:需要输出两个基于条件数据的列

时间:2019-11-25 19:12:17

标签: mysql sql oracle-sqldeveloper

我一直在审查一些相关的文章,但似乎无法在Oracle SQL中使它正常工作,因此需要一些指导。我正在处理一些数据,这些数据要根据条件数据从自定义列的同一表和列中输出值。

示例数据:

corp_acct   Subscriber_id  MAX_EXTENSIONS    
10001       90000          1   
10002       90001          1  
10003       90002          2  
10004       90003          3  
10005       90004          1  
10006       90005          2  
10007       90005          1  

在此示例中,我想输出两列corp_acct,少一列,多输出一列,在第一列中,我要输出max_extensions = 1的所有corp_acct,在第二列中,我要输出的所有corp_acct => 2

示例输出

lesser      more  
10001       10003             
10002       10004            
10005       10006  
10007                

如果可能的话,我不想创建任何新表,而只希望基于输出这两列来做一个选择语句。

1 个答案:

答案 0 :(得分:1)

您可以使用聚合和row_number()

select max(case when max_extensions = 1 then corp_acct end) as col1,
       max(case when max_extensions > 1 then corp_acct end) as col2       
from (select t.*,
             row_number() over (partition by case when max_extensions = 1 then 1 else 2 end order by corp_acct) as seqnum
      from t
     ) t
group by seqnum;