使用下表如何在最小值时将值更改为“ in”,在最大值时将值更改为“ out”,如果第一个值将中间值更改为“ leave out”在'in'之后,但它不是最大值,如果不是最大值,它之后的记录也将保留。
code val date val2
001 1 2018-08-08 00:00:00.000 NULL
001 2 2018-08-08 00:00:00.000 NULL
001 3 2018-08-08 00:00:00.000 NULL
001 4 2018-08-08 00:00:00.000 NULL
001 1 2018-08-09 00:00:00.000 NULL
001 2 2018-08-09 00:00:00.000 NULL
002 1 2018-08-09 00:00:00.000 NULL
002 2 2018-08-09 00:00:00.000 NULL
002 3 2018-08-09 00:00:00.000 NULL
002 4 2018-08-09 00:00:00.000 NULL
003 1 2018-08-09 00:00:00.000 NULL
003 2 2018-08-09 00:00:00.000 NULL
我设法更改了最小值,但最大值仅按日期更改,并记下了员工代码。
答案 0 :(得分:0)
这是您想要的吗?
select t.*,
(case when val = 1 then 'in'
when val = max(val) over (partition by code) then 'out'
else 'leave out'
end)
from t;
如果是这样,则可以轻松地将逻辑合并到更新中。