为 6 个唯一列选择最新记录
Selecting the newest records for 6 unique columns
我有一个 table 的 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
现在的问题是一些记录得到了更新,而另一些则没有,所以我的查询 returns 一种货币的重复值而一种货币没有任何值。我需要它来输出 6 个独特的 FROM_CURRENCY_IDs 和它们的 XCHG_RATE 以及最新的 RECORD_CREATED 日期
我一直在尝试使用 group by 来排除重复的行,但没有成功。
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。
我有一个 table 的 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
现在的问题是一些记录得到了更新,而另一些则没有,所以我的查询 returns 一种货币的重复值而一种货币没有任何值。我需要它来输出 6 个独特的 FROM_CURRENCY_IDs 和它们的 XCHG_RATE 以及最新的 RECORD_CREATED 日期
我一直在尝试使用 group by 来排除重复的行,但没有成功。
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。