Oracle Data Gaps

时间:2014-12-15 15:13:13

标签: sql oracle

即时寻找填写此条件的查询:

目前为我们提供了实体的BAC数量(这是我们需要的)。数据库在每个会计实体内连续分配BAC ID。因此,我们需要在查询中再添加一个字段,以显示实体当前最高的BAC ID。一旦我们有了这个,只需将结果过滤到任何地方,记录的数量不等于最高ID。

我当前的查询:

 select accounting_entity_id, count(bac_id)
 from dc.pl_bac_information
 group by accounting_entity_id
 having count(bac_id) > 1; 

2 个答案:

答案 0 :(得分:1)

使用分析函数:

select bi.*
from (select bi.*, max(bac_id) over (partition by accounting_entity_id) as max_bac_id
      from dc.pl_bac_information bi
     ) bi
where bac_id = max_bac_id;

这假设您使用的是Oracle。

答案 1 :(得分:0)

SELECT ACCOUNTING_ENTITY_ID
  FROM DC.PL_BAC_INFORMATION
HAVING COUNT(BAC_ID) > 1 AND COUNT(BAC_ID) != MAX(BAC_ID)
 GROUP BY ACCOUNTING_ENTITY_ID;