查询:
@NotBlank(message = "{error.notblank.part1of2}Address Line 1{error.notblank.part2of2}")
private String addressLineOne;
结果:
我需要这样结束:
完成此操作后,我可以按行号分组以获取每个行号组(1,2,3 ......)的MAX()和MIN()。
如果最后两个记录是" T",那么我就有2个4'等等。
编辑
为了澄清,我需要对每个DateFlag进行分组并为每个组添加一个数字,但它必须按顺序排列......(按日期)。
因此,在此示例中,您有2条记录属于第一组(组1)。
然后是第2组(T)的一条记录
然后是第3组(H)的一条记录
然后是第4组(T)的一条记录
答案 0 :(得分:2)
您可以使用row_number()
值的差异来描述该组,然后使用额外的dense_rank()
来枚举它们。我认为以下工作:
select el.*, dense_rank() over (partition by EmployeeId order by grp)
from (select el.*,
(row_number() over (partition by EmployeeId order by date) -
row_number() over (partition by EmployeeId, DateFlag order by date)
) as grp
from @EmploymentLength el
) el;
在某些情况下,grp
值可能实际上会重复员工中的不同群组。在这种情况下,最好使用每个组的最小日期进行枚举:
select el.*, dense_rank() over (partition by EmployeeId, order by grpdate)
from (select el.*, min(date) over (partition by EmployeeId, DateFlag, grp) as grpdate
from (select el.*,
(row_number() over (partition by EmployeeId order by date) -
row_number() over (partition by EmployeeId, DateFlag order by date)
) as grp
from @EmploymentLength el
) el
) el