Sql 如何标记过去重复多次的id

Sql 如何标记过去重复多次的id,sql,postgresql,Sql,Postgresql,我试图用过去6个月重复出现的特定条件标记员工id。我希望这样做的方式是创建一个新列,该列将使用我在查询中指定的条件标记这些员工 Eeid Receiveddt Status Reason Past 6 months? 123 May19 closed OHM 1 234 Jan19 closed xyz 0 123 July19 closed OHM 1 567

我试图用过去6个月重复出现的特定条件标记员工id。我希望这样做的方式是创建一个新列,该列将使用我在查询中指定的条件标记这些员工

   Eeid  Receiveddt  Status  Reason  Past 6 months?
   123     May19     closed   OHM      1
   234     Jan19     closed   xyz      0
   123     July19    closed   OHM      1
   567     Aug19     open     ZZZ      0
   123     Sept19    open     OHM      0
现在,根据上面的示例,eeid 123被标记在“过去6个月”列下,因为接收日期在过去6个月内,状态为关闭(这是我的2个标记条件) 我正在考虑使用case语句,但不确定如何检查重复的“Eeid”

这是您想要的吗

select t.*,
       ( received_date > current_date - interval '6 month' and status = 'closed' )::int
from t;

我对你的要求有不同的理解。我读到它的意思是,您希望更新“已关闭”行,其中另一个id相同的行也在6个月内关闭,在6个月内关闭。下面就是这么做的,我试图构建它以显示逐步的开发(它可能会有所减少,但这不会显示它的开发)。希望这对您有所帮助,并为您提供可供借鉴的技术

update t
   set last_6mo_flag = 1
 where last_6mo_flag = 0
   and (id, received_date) in 
       (select id,received_date 
          from (select  id, received_date, last_6mo
                  from ( select id, received_date 
                              , (   coalesce((extract (days from (received_date + interval '6 months') - received_date)::integer) >  abs(next_date - received_date),false) 
                                 or coalesce((extract (days from (received_date + interval '6 months') - received_date)::integer) >  abs(prior_date- received_date),false)
                                ) last_6mo 
                           from (select id, received_date, status
                                      , lag(t.received_date)  over(partition by t.id order by t.id, t.received_date) next_date
                                      , lead(t.received_date) over(partition by t.id order by t.id, t.received_date) prior_date 
                                   from t
                                  where status = 'closed'                                   
                                ) s1 

                       ) s2
                 where last_6mo
               ) s3
       );

我无法查看::之后的查询部分,我不知道它是否被截断,weird@KaranKashyap . . . 它只是
::int