我有这样的桌子
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
我认为使用by分区或类似的方法是可能的,但是我找不到如何使用它。
最佳答案
您可以尝试使用LEAD
窗口功能。
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
关于sql - 如何从Oracle中的不同行创建年龄段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52373751/