选择6个唯一列的最新记录

时间:2015-07-07 12:52:04

标签: sql sql-server-2008-r2

我有一张包含6种货币转换的表格,几乎每天都会更新。不幸的是,软件的工作方式是插入新行而不是更新现有行。我之前的SELECT如下

SELECT FROM_CURRENCY_ID, XCHG_RATE 
FROM
(
SELECT TOP 6 FROM_CURRENCY_ID, XCHG_RATE 
FROM SHARED_CURRENCY_EXCHANGE 
WHERE NOT FROM_CURRENCY_ID = 'CAD' 
ORDER BY RECORD_CREATED desc
) t 
ORDER BY FROM_CURRENCY_ID

现在的问题是一些记录得到了更新而其他记录没有更新,因此我的查询返回其中一个电流的重复值而一个没有。我需要它输出6个唯一的FROM_CURRENCY_ID和他们的XCHG_RATE以及最新的RECORD_CREATED日期

我一直试图通过排除重复的行而没有运气。

1 个答案:

答案 0 :(得分:2)

with x as 
(select row_number() over(partition by from_currency_id order by record_created desc) rn, * from shared_currency_exchange)
select from_currency_id, xchg_rate from x 
where rn = 1

这使得最近的记录成为rownumber 1,你可以在这种情况下使用cte。