获取最新的更新日期和;其相关信息

时间:2011-03-22 11:27:28

标签: oracle11g

我有这个查询问题。希望有人可以提供帮助

下面的表格为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获得这个结果

感谢名单

2 个答案:

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

答案 1 :(得分: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的代码)将返回太多行,但是对您提供的数据集起作用。