我得到以下结果
KICAE 101000000010 110000001
KICAE 101000000010 210000001
KICAE 101000000020 110000002
KICAE 101000000020 210000002
KICAE 101000000030 110000003
KICAE 101000000030 210000003
KICAE 101000000040 110000004
KICAE 101000000040 210000004
当我运行下面的sql时:
SELECT 'KICAE','101'||LPAD(ROW_NUMBER() OVER(ORDER BY COURSE_LIST)*10,9,0),COURSE_LIST FROM SYSADM.PS_CRSE_LST_HDR_SF where COURSE_LIST LIKE '1%'
UNION
SELECT 'KICAE','101'||LPAD(ROW_NUMBER() OVER(ORDER BY COURSE_LIST)*10,9,0),COURSE_LIST FROM SYSADM.PS_CRSE_LST_HDR_SF where COURSE_LIST LIKE '2%'
我想返回以1开始的课程列表的奇数倍,以2开始的课程列表的偶数倍
预期结果:
KICAE SEQNUM COURSE_LIST
KICAE 101000000010 110000001
KICAE 101000000020 210000001
KICAE 101000000030 110000002
KICAE 101000000040 210000002
KICAE 101000000050 110000003
KICAE 101000000060 210000003
KICAE 101000000070 110000004
KICAE 101000000080 210000004
3条答案
按热度按时间xyhw6mcr1#
以下是我的猜测(courses子查询用于生成一些输入,它不是解决方案的一部分):
n53p2ov02#
我建议使用以下嵌套查询:
mrphzbgm3#
只要稍微调整一下你的数学:
我做了第一个
*20-10
第二个呢*20
…因为你想让rownum 1在第一个变成10(120-10),在第二个变成20(120),所以rownum 2变成30(220-10)和40(220)等等你可能也会发现这一点很有效:
如果列是数字的,则最好保持它们为数字,而不是严格执行此操作:
我也很惊讶,你也许可以完全放弃昂贵的排序操作: