如何根据条件从表中获取记录

时间:2020-11-06 08:34:18

标签: sql amazon-redshift

仅选择最新金额,如果为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

1 个答案:

答案 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_numberdense_rank

相关问题