2017-09-15 1 views
0

다음은 쿼리 실행 후 나에게 두 행을 생성 할 내 쿼리입니다.날짜를 Oracle의 결과 집합과 비교하십시오.

SELECT *FROM ELP_COUNTRY,ELP_COUNTRY_Tax where 
ELP_COUNTRY.COUNTRY_ID=Elp_Country_Tax.Country_Id 
and ELP_COUNTRY.DESCRIPTION='Brasil' and GETENGLISHDESCFROMLISTITEM(ELP_COUNTRY_TAX.TAX_TYPE_ID)='Premiums' 
and ELP_COUNTRY_TAX.DEALER_ID is null 

이 쿼리는 두 행을 반환하고 그 행에서 다시 유효 날짜라는 날짜가 있습니다. 다시 그 행에서 나는 가장 높은 날짜를 원합니다.

아무에게도 도움을 줄 수 있습니까? 나는 오라클을 처음 사용합니다

+0

실제로 반환하고 싶은 필드는 무엇입니까? 당신은 MAX (effdt) 또는 당신이 반환하려고하는 것과 함께 DESC를 effdt하여 단지 명령을 할 수 있습니다. – Liss

+0

일부 필드 만 반환하고 싶습니다. – Pushp

+0

@Liss를 참조하십시오. 내 쿼리는 두 행에서 두 행을 다시 반환합니다. 최대 날짜를 얻고 싶습니다. – Pushp

답변

0

유효 날짜가있는 테이블을 자체 조인하고 다음과 같이 추가하여 평가할 수 있습니다. (유효 날짜가 어떤 테이블인지 추측하고 있으므로 조인이 정확하지 않을 수 있습니다. 와 테이블이 관련되는 방법)

and elp_country.effective_date = (select max(e2.effective_date) from elp_country e2 where e2.country_id = elp_country.country_id and elp_country.description = 'Brasil') 

아니면 그냥 그룹 일이 있다면 당신은 다음과 같이 당신의 선택이 될 것입니다 뭔가 일을하려고하고 있습니다 :

SELECT max(effective_date), column2, column3 
FROM ELP_COUNTRY, 
ELP_COUNTRY_Tax 
where ELP_COUNTRY.COUNTRY_ID=Elp_Country_Tax.Country_Id 
and ELP_COUNTRY.DESCRIPTION='Brasil' and 
GETENGLISHDESCFROMLISTITEM(ELP_COUNTRY_TAX.TAX_TYPE_ID)='Premiums' 
and ELP_COUNTRY_TAX.DEALER_ID is null 
group by column2, column3; 
0

당신은 순위 기능을 사용할 수를 , "select *"및 where 절 술어로 래핑하십시오 다음과 같이 1의 순위를 필터링 :

SELECT * FROM (
    SELECT 
    c.*, 
    ct.*, 
    rank() over (order by ct.effective_date) as eff_date_rnk 
    FROM 
    ELP_COUNTRY c, 
    ELP_COUNTRY_Tax ct 
    WHERE 
    ELP_COUNTRY.COUNTRY_ID = Elp_Country_Tax.Country_Id 
    and ELP_COUNTRY.DESCRIPTION='Brasil' 
    and GETENGLISHDESCFROMLISTITEM(ELP_COUNTRY_TAX.TAX_TYPE_ID)='Premiums' 
    and ELP_COUNTRY_TAX.DEALER_ID is null 
) t 
WHERE t.eff_date_rnk = 1; 
관련 문제