我有一张包含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日期
我一直试图通过排除重复的行而没有运气。
答案 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。