2017-09-15 33 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; 
相關問題