如何从 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
我认为可以使用分区或类似的东西,但我不知道如何使用它。
你可以尝试使用LEAD
window功能
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
我有一个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
我认为可以使用分区或类似的东西,但我不知道如何使用它。
你可以尝试使用LEAD
window功能
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