Sql 为6个唯一列选择最新记录

Sql 为6个唯一列选择最新记录,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我有一张6种货币兑换的表格,几乎每天都在更新。不幸的是,该软件的工作方式是插入新行,而不是更新现有行。我之前的选择如下 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 ORDE

我有一张6种货币兑换的表格,几乎每天都在更新。不幸的是,该软件的工作方式是插入新行,而不是更新现有行。我之前的选择如下

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个唯一的货币ID及其XCHG汇率

我一直试图通过分组排除重复的行,但没有成功

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

这将为最新记录提供行号1,您可以在这种情况下使用cte。

缺少括号,否则看起来不错。而且它缺少来自\u CURRENCY\u ID='CAD'的
条件。因此这将取代我的子查询?@AlexFerreira..您不需要子查询..请按以下步骤尝试此查询is@vkp是的,成功了!