繁体   English   中英

Oracle SQl Developer-根据条件将多行合并为一行

[英]Oracle SQl Developer - Combining multiple rows into one row based on conditions

有没有一种方法可以编写SQL查询,该查询通常会根据某些条件将多行返回为一行。 下面是一个示例和期望的结果。

仅当与该AGMTNUM关联的所有ACCTNUM都处于活动状态时,该查询才返回START&AGMTNUM。

表名Customer_Setup示例

Start      AGMTNUM      ACCTNUM      STATUS
12/1/16    AAAA         123456       ACTIVE
12/1/16    AAAA         789012       ACTIVE
12/1/16    AAAA         345675       PENDING 
7/1/16     BBBB         444444       ACTIVE
7/1/16     BBBB         555555       ACTIVE
8/1/16     CCCC         666666       PENDING
8/1/16     CCCC         777777       PENDING
8/1/16     CCCC         888888       PENDING
9/1/16     DDDD         999999       ACTIVE
9/1/16     DDDD         000000       ACTIVE

预期成绩

START     AGMTNUM
7/1/16     BBBB  
9/1/16     DDDD     

嗯。

select start, agmtnum
from t
group by start, agmtnum
having min(status) = max(status) and min(status) = 'ACTIVE';

不清楚start是否是所需定义的一部分。 您可能需要这种细微的变化:

select min(start), agmtnum
from t
group by agmtnum
having min(status) = max(status) and min(status) = 'ACTIVE';

另一种方法是:

select distinct "Start", agmtnum
from
  customer_setup c1
where
  not exists ( select * from customer_setup c2 where c1.agmtnum = c2.agmtnum and c2."STATUS" <> 'ACTIVE')
order by 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM