select 쿼리를 골라 내는데 어려움이 있습니다.Oracle Select 쿼리에 대한 도움이 필요합니다.
PFB는 테이블 및 대응하는 데이터 : 여기
Match_Status 0-->Initial Record
1-->Singel Match
2-->Multi Match
마다 기록 용
ID DLS MATCH_STATUS LAST_UPDATE_TIME BO CH FT
1 0 0 09-07-2013 00:00:00 IT TE NA
1 1 1 09-07-2013 00:01:01 IT TE NA
2 0 0 09-07-2013 10:00:00 IP TE NA
3 0 0 09-07-2013 11:00:00 IT YT NA
3 2 2 09-07-2013 11:01:00 IT YT NA
는 match_status 0 이후 매칭 처리 단부 다른 번호로 초기 엔트리가있을 것 같은 1 , 2 업데이트됩니다.
나는 그런 다음
가 예상 밖으로 넣어
BO, CH 및 FT에 의해 총 기록, 대기 일치 하나의 일치 및 멀티 매치 그룹으로 레코드를 검색하려고 : 내가 가지고있는BO CH FT TOTAL_RECORD AWAITNG_MATCH SINGLE_MATCH MULTI_MATCH
IT TE NA 1 0 1 0
IP TE NA 1 1 0 0
IT YT NA 1 0 0 2
을 나는 때문에 = 0을 match_status의 이해 위의 쿼리와
select BO,CH,FT,sum(case when match_status=0 then 1 else 0 end) as TOTAL_RECORD,
sum(case when match_status = 0 then 1 else 0 end) as AWAITING_MATCH,
sum(case when match_status = 1 then 1 else 0 end) as SINGLE_MATCH,
sum(case when match_status = 2 then 1 else 0 end) as MULTI_MATCH from
table1 where last_update_time >= current_timestamp-1
group by BO,CH,FT;
문제는, awaiting_match 총 기록으로 같은 채워지고있다
: 쿼리 아래 시도마찬가지로 나는 접근 방식 awaiting_match 후속 행 항목에 대해 동일한 값으로 채워지고있다select BO,CH,FT,sum(case when match_status=0 then 1 else 0 end) as TOTAL_RECORD,
select (sum(case when t1.ms=0 then 1 else 0 end) from
(select max(match_status) as ms from table1 where last_update_time >= current_timestamp-1 group by id)t1))awaiting_match,
sum(case when match_status = 1 then 1 else 0 end) as SINGLE_MATCH,
sum(case when match_status = 2 then 1 else 0 end) as MULTI_MATCH from
table1 where last_update_time >= current_timestamp-1
group by BO,CH,FT;
문제를 시도했다.
원하는 형식에 대한 적절한 쿼리를 도와주십시오.
미리 감사드립니다.
예상 출력에 열을 무엇을 설명 할 것입니다 ('TOTAL_RECORD AWAITNG_MATCH SINGLE_MATCH MULTI_MATCH') 의미? – luchosrock
각 단계의 레코드 수입니다. 예를 들어 ID가 1 인 레코드가 테이블에 삽입 된 경우 초기 상태는 일치 상태가 0이지만 대기 상태 일 때 0이되고 일치하는 프로세스가 끝나면 다음 삽입이 발생합니다 동일한 레코드이지만 다른 일치 상태는 단일 일치에 대해 1을 표시합니다. 등등 ... 총 레코드는 ID의 별개 수입니다. 일치하는 레코드는 현재 일치하는 상태 0에있는 레코드의 총 개수입니다. 일치하는 프로세스 끝과 후속 삽입이 발생하면주의해야합니다. 무대 –