求明细顺序号更新解决思路
求明细顺序号更新
条件: 当billid=billid 时 , 当itemno不相同时, vipitemno按顺序排列
表mnf_manuorderdetail
原表里面的内容:
单据ID,顺序号,归属产品顺序,物料ID,归属产品明细顺序号
billid itemno mxitemno materialid vipitemno
249 1 1 17 0
249 2 1 18 0
249 3 1 19 0
249 4 1 20 0
249 5 1 21 0
249 6 1 18 0
249 7 2 52 0
249 8 2 55 0
249 9 2 63 0
249 10 2 82 0
249 11 2 59 0
249 12 2 79 0
249 13 2 76 0
249 14 2 58 0
249 15 2 67 0
249 16 2 81 0
249 17 2 56 0
249 18 2 73 0
249 19 2 93 0
249 20 2 72 0
249 21 2 65 0
249 22 2 36 0
249 23 2 90 0
249 24 2 46 0
249 25 2 97 0
249 26 2 53 0
249 27 2 84 0
249 28 2 49 0
249 29 2 47 0
249 30 2 66 0
求结果:
billid itemno mxitemno materialid vipitemno
249 1 1 17 1
249 2 1 18 2
249 3 1 19 3
249 4 1 20 4
249 5 1 21 5
249 6 1 18 6
249 7 2 52 1
249 8 2 55 2
249 9 2 63 3
249 10 2 82 4
249 11 2 59 5
249 12 2 79 6
249 13 2 76 7
249 14 2 58 8
249 15 2 67 9
249 16 2 81 10
249 17 2 56 11
249 18 2 73 12
249 19 2 93 13
249 20 2 72 14
249 21 2 65 15
249 22 2 36 16
249 23 2 90 17
249 24 2 46 18
249 25 2 97 19
249 26 2 53 20
249 27 2 84 21
249 28 2 49 22
249 29 2 47 23
249 30 2 66 24
------解决思路----------------------
------解决思路----------------------
更新语句可以试一下下面的sql
最后,查询一下。
select * from mnf_manuorderdetail
条件: 当billid=billid 时 , 当itemno不相同时, vipitemno按顺序排列
表mnf_manuorderdetail
原表里面的内容:
单据ID,顺序号,归属产品顺序,物料ID,归属产品明细顺序号
billid itemno mxitemno materialid vipitemno
249 1 1 17 0
249 2 1 18 0
249 3 1 19 0
249 4 1 20 0
249 5 1 21 0
249 6 1 18 0
249 7 2 52 0
249 8 2 55 0
249 9 2 63 0
249 10 2 82 0
249 11 2 59 0
249 12 2 79 0
249 13 2 76 0
249 14 2 58 0
249 15 2 67 0
249 16 2 81 0
249 17 2 56 0
249 18 2 73 0
249 19 2 93 0
249 20 2 72 0
249 21 2 65 0
249 22 2 36 0
249 23 2 90 0
249 24 2 46 0
249 25 2 97 0
249 26 2 53 0
249 27 2 84 0
249 28 2 49 0
249 29 2 47 0
249 30 2 66 0
求结果:
billid itemno mxitemno materialid vipitemno
249 1 1 17 1
249 2 1 18 2
249 3 1 19 3
249 4 1 20 4
249 5 1 21 5
249 6 1 18 6
249 7 2 52 1
249 8 2 55 2
249 9 2 63 3
249 10 2 82 4
249 11 2 59 5
249 12 2 79 6
249 13 2 76 7
249 14 2 58 8
249 15 2 67 9
249 16 2 81 10
249 17 2 56 11
249 18 2 73 12
249 19 2 93 13
249 20 2 72 14
249 21 2 65 15
249 22 2 36 16
249 23 2 90 17
249 24 2 46 18
249 25 2 97 19
249 26 2 53 20
249 27 2 84 21
249 28 2 49 22
249 29 2 47 23
249 30 2 66 24
------解决思路----------------------
SELECT *
FROM ( SELECT row_number() OVER ( PARTITION BY billid, mxitemno ORDER BY itemno ) rn ,
billid ,
itemno ,
mxitemno
FROM mnf_manuorderdetail
) a
------解决思路----------------------
更新语句可以试一下下面的sql
update mnf_manuorderdetail set vipitemno=a.rId from (select *,row_number() over(partition by billid,mxitemno order by itemno) as rId from mnf_manuorderdetail) as a where billid=a.billid and itemno=a.itemno
最后,查询一下。
select * from mnf_manuorderdetail