三个窗口即可解决第一个窗口取最新一次薪资第二个窗口取第一次薪资第三个窗口取每个员工最大的to_date,用于判断是否在职过滤出to_date='9999-01-01',即在职的员工,然后再过滤出第一次薪资记录和最新一次薪资记录,这样每个员工最多只有2条记录,第一次和最新一次,特殊情况是从来没有变动过工资,只有一条数据。计算薪资变动,需要判断是否从来没调整过工资,如果是则为0,否则用最后一次薪资-第一次薪资,即:第一次薪资*-1,然后再sum。 select emp_no, case count(1) when 1 then 0 else sum...