如何从 oracle 中的不同行创建年龄段

How can I create age band from different rows in oracle

我有一个table这样的

rateId  gender  Age
HV1     M       0
HV1     M      12
HV1     M      50
HV1     F      0
HV1     F      20
HV1     F      50

我想为每个性别的所有 rateId 创建一个年龄段。当不再有上限年龄时,它可以是 100。 所以我的结果必须是:

rateId  gender  AgeLow  AgeHigh
HV1     M       0       12
HV1     M       12      50
HV1     M       50      100
HV1     F       0       20
HV1     F       20      50
HV1     F       50      100

我认为可以使用分区或类似的东西,但我不知道如何使用它。

你可以尝试使用LEADwindow功能

SELECT  t1.rateId, 
        t1.gender,  
        t1.Age AgeLow,
       LEAD(t1.Age,1,100) over(partition by t1.rateId,t1.gender order by t1.Age) AgeHigh
FROM T t1

SQL DEMO