2017-09-15 35 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 

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

任何人都可以帮助我解决这个问题。我是Oracle的新手

+0

您确实想要返回哪些字段?您可以通过将DESC与您要返回的内容进行MAX(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

您可以使用RANK函数,并用“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; 
相关问题