2011-03-22 74 views
0

我有這個查詢問題。希望有人能幫助獲取最新更新日期及相關信息

鑑於見下表是Country Rates

ID  Country Date  Rate 
----------------------------------  
1. CANADA 03/02/2009 0.78 
2. UK  12/07/2009 1.23 
3. UK  03/02/2010 0.12 
4. USA  05/11/2010 1.63 
5. CANADA 03/02/2010 0.52 
6. USA  05/02/2011 0.98 

我想獲得最新的日期&它相關的速率

結果應該是這樣的:

Country Date  Rate 
---------------------------  
UK  03/02/2010 0.12 
CANADA 03/02/2010 0.52 
USA  05/02/2011 0.98 

所以我想讓SQK獲得這個結果

感謝名單

回答

1

Malikaa-

假設你的表的結構是這樣的:

CREATE TABLE RATES 
(
    COUNTRY VARCHAR2(10), 
    DT  DATE, 
    RATE  NUMBER 
) 

,那麼你可以運行這個得到答案:

SELECT O.COUNTRY, O.RATE, O.DT 
FROM RATES O JOIN 
(
    SELECT COUNTRY, MAX(DT) DT 
    FROM RATES 
    GROUP BY COUNTRY) I 
ON O.COUNTRY = I.COUNTRY 
AND O.DT = I.DT 

希望這有助於。

-CJ

0

以下是這樣做的兩種替代方式。第一種是位整潔和第二快一點,都還附帶有您想要的順序列的獎金;)

WITH latest_dates 
    AS (SELECT country, max(dt) AS dt FROM rates GROUP BY country) 
SELECT l.country, l.dt, r.rate FROM latest_dates l 
LEFT JOIN rates r ON l.country=r.country AND l.dt = r.dt; 

SELECT r.country, r.dt, r.rate 
FROM rates r 
LEFT OUTER JOIN rates l ON l.country = r.country AND l.dt > r.dt 
WHERE l.dt IS NULL; 

你應該注意到,所有三個(這兩個和CJ的代碼)將返回太多的行,當一個國家在同一天更多的一個費率,但工作的數據集,你給。