[英]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.