如何通过查看每行中的上一个和下一个值进行分组

时间:2016-10-18 14:38:59

标签: sql sql-server

假设我有一张包含以下记录的表......

ResumeId    Action
39092       DEV   
39092       C     
39092       C     
39096       C     
39096       C     
39098       CONF      
39098       CONF      

如何对它们进行分组以使输出看起来像这样?在下面的情况中,由于ResumeId = 39092至少有一个DEV记录,因此分组结果应返回DEV ...

ResumeId    Action  
39092       DEV     
39096       C       
39098       CONF        

1 个答案:

答案 0 :(得分:3)

这是一种方法:

select resumeid,
       (case when max(action) = min(action) then max(action)
             when sum(case when action = 'DEV' then 1 else 0 end) > 0 then 'DEV'
             else '??'
        end)
from t
group by resumeid;

如果有多个actions,则您的规则不会指定要执行的操作,但没有DEV