将日期与Oracle中的结果集进行比较

时间:2017-09-15 15:22:54

标签: sql 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 

此查询返回两行,并再次从该行返回一个名为生效日期的日期。所以我想从那些行中得到最高的日期。

任何人都可以帮助我。我是Oracle的新手

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您可以使用排名功能,并使用"选择*"和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;