编写一个分析函数来标记某些列的最后日期

Writing an analytic function to mark last date of some column

你能帮我写一个分析函数来标记客户服务停止的最后日期吗?例如,一位客户的服务有 2-3 次停靠,我想计算有多少次停靠,并标记最后一次停靠的日期。

我正在使用

SELECT column_name1, column_name2, column_name3, column_name4
     , ROW_NUMBER() OVER(PARTITION BY column_name3 ORDER BY column_name4) AS Something 
  FROM ... 
 WHERE ...
 ORDER B

其中 column_name3 包含状态 - 服务是否已停止,column_name4 包含上次停止的日期。

希望我理解正确

select unique column_name1, column_name2, column_name3,
    max(when column_name3 = 'inactive' then column_name4 end) over(partition by column_name1) last_date,
    count(when column_name3 = 'inactive' then 1 end) over(partition by column_name1) cnt