仅选择最新金额,如果为null,则在此之前。
表a
customer|amount|date
001|2 |20201101
001|null|20201102
001|3 |20201103
002|8.9 |20201101
002|7 |20201008
002|null|20201106
结果
001|null|20201101
001|null|20201102
001|3 |20201103
002|null|20201101
002|null|20201008
002|7 |20201106
金额数据应按日期获取最新数据,其他记录将为null,如果金额为最新日期为null,则应获取先前的非null值。 我目前的尝试:
select top 1 [amount]
from table
where [amount] is not null
order by date desc
答案 0 :(得分:0)
您可能正在寻找的是窗口函数:
SELECT *
FROM (SELECT *,
row_number() over
(partition by customer
order by amount desc, date desc) as rn
FROM your_table
WHERE amount is not null)
WHERE rn = 1
您可以根据需要使用row_number或dense_rank