如何根据id复制值

时间:2016-03-23 19:45:19

标签: sql sql-server database

我需要根据表中的条件选择值,例如:

Id   name   value  status  priority
 1   ram    23     p       high
 1   kev    23     p       Medi
 1   Mac    23     h       high
 2   Dot    25     f       low
 2   Dot    25     h       Avg
 3   Pat    25     f       low
 3   vin    25     u       low

如果您看到status = h,则在选择

期间,应根据id列将优先级列更改为

结果必须在表格

之下
 Id   name   value  status  priority
 1    ram     23       p       high
 1    kev     23       p       high
 1    Mac     23       h       high
 2    Dot     25       f       high
 2    Dot     25       h       high
 3    Pat     25       f       low
 3    vin     25       u       low

帮帮我

1 个答案:

答案 0 :(得分:3)

如果我理解正确,你需要带有一些条件逻辑的窗口函数:

select t.id, t.name, t.value, t.status,
       (case when sum(case when status = 'h' then 1 else 0 end) over (partition by id) > 0
             then 'high'
             else priority
        end) as priority
from t;