2014-12-15 2 views
0

이 조건을 만족하는 쿼리를 찾고있는 사람 :Oracle Data Gaps

현재 엔티티에서 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; 
+0

제목에 Oracle을 지정했기 때문에 MySQL 태그를 제거했습니다. –

답변

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; 
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; 

이것은 당신이 오라클을 사용하는 가정합니다.

+0

엔티티에서 현재 가장 높은 BAC ID를 표시하는 쿼리에 하나 이상의 필드를 추가해야합니다. 일단 우리가 그렇게하면, 레코드의 수가 가장 높은 ID와 같지 않은 곳으로 결과를 필터링하십시오. –

+0

SELECT ACCOUNTING_ENTITY_ID, COUNT (BAC_ID) FROM DC.PL_BAC_INFORMATION WHERE ACCOUNTING_ENTITY_ID = 359 GROUP BY ACCOUNTING_ENTITY_ID; DC.PL_BAC_INFORMATION FROM SELECT ACCOUNTING_ENTITY_ID, MAX (BAC_ID) WHERE ACCOUNTING_ENTITY_ID BY ACCOUNTING_ENTITY_ID가 = 359 기; 우리가해야 할 일은 상위 두 쿼리를 결합하여 비교하는 쿼리를 작성하는 것입니다. count <>가 가장 높은 id 값의 위치를 ​​알아야합니다. –

+0

일들이 가장 높은 id와 같지 않은 곳에서'where bac_id

관련 문제