我有类似
的数据EmpID Salary Paid Date Salary Paid
100 628 1/11/2019
100 1086 1/25/2019
100 1055 2/8/2019
100 981 2/22/2019
100 653 3/8/2019
100 871 3/22/2019
100 385 4/18/2019
101 2032 1/4/2019
101 3466 1/18/2019
101 2652 2/1/2019
101 2013 4/26/2019
有没有办法识别“趋势减少”标志(是/否)。对于所有行,只能重复一条记录或最好是“减少”的决定。像
EmpID Salary Paid Date Salary Paid Decreasing Flag
100 628 1/11/2019 Y
100 1086 1/25/2019 Y
100 1055 2/8/2019 Y
100 981 2/22/2019 Y
100 653 3/8/2019 Y
100 871 3/22/2019 Y
100 385 4/18/2019 Y
101 2032 1/4/2019 N
101 3466 1/18/2019 N
101 2652 2/1/2019 N
101 2013 4/26/2019 N
Y / N是每个Empid(不是每一行)的值
谢谢
我已经累了,但是找不到合适的方法
答案 0 :(得分:0)
如果要比较趋势的第一和最后工资,可以使用first_value()
:
select t.*,
(case when first_value(salary) over (partition by empid order by paid_date) <
first_value(salary) over (partition by empid order by paid_date desc)
then 'N' else 'Y'
end) as decreasing_flag
from t;
请注意,first_value()
的语法在数据库之间可能会略有不同。