标题:求助 !一句update 更新所有流水号
只看楼主
小805805
Rank: 2
等 级:论坛游民
帖 子:24
专家分:20
注 册:2021-2-28
结帖率:75%
已结贴  问题点数:20 回复次数:9 
求助 !一句update 更新所有流水号
流水号 由日期字段的月份日期加编号(编号从01开始 连续)组成, 如5月2号一共两票 那么流水号就是‘050201’和‘050202’。
create table l1 (序号 n(10),日期 D,姓名 C(10),收支 N(10),流水号 C(10))
insert into  l1 (序号,姓名,日期,收支) VALUES (1,'张三',{^2022.02.02},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (2,'张三',{^2022.02.02},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (3,'张三',{^2022.02.03},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (4,'李四',{^2022.02.03},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (5,'李四',{^2022.02.04},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (6,'王五',{^2022.02.04},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (7,'王五',{^2022.02.04},10)

insert into  l1 (序号,姓名,日期,收支) VALUES (8,'张三',{^2022.02.05},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (9,'张三',{^2022.02.06},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (10,'张三',{^2022.02.07},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (11,'李四',{^2022.02.08},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (12,'李四',{^2022.02.09},-10)
insert into  l1 (序号,姓名,日期,收支) VALUES (13,'王五',{^2022.02.10},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (14,'王五',{^2022.02.11},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (15,'张三',{^2022.02.05},10)
insert into  l1 (序号,姓名,日期,收支) VALUES (16,'李四',{^2022.02.06},20)
insert into  l1 (序号,姓名,日期,收支) VALUES (17,'王五',{^2022.02.11},10)
搜索更多相关主题的帖子: 姓名 into 序号 日期 insert 
2022-05-17 19:40
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:12
帖 子:233
专家分:577
注 册:2014-3-18
得分:14 
把你的想法写成一个sql语句就行了
2022-05-17 20:17
小805805
Rank: 2
等 级:论坛游民
帖 子:24
专家分:20
注 册:2021-2-28
得分:0 
UPDATE l2 SET 流水号=SUBSTR(DTOC(日期),6,2)+SUBSTR(DTOC(日期),9,2)+PADL(ALLTRIM(STR(m1+1)),2,'0')


红色提示 是我希望做出来的效果
2022-05-18 09:30
大哲子
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-5-14
得分:0 
是不是用do while循环 让指针一直往下移动
或者用vfp9 支持多表更新  update 表1 set 流水号=  from 表2 where 条件
2022-07-14 10:09
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
*!* SQL 一句话,就不会了,VFP的多句话还是会的。
SET CENTURY ON
SET DATE YMD
create CURSOR  T1 (序号 n(10),日期 D,姓名 C(10),收支 N(10),流水号 C(10))

insert into  T1 (序号,姓名,日期,收支) VALUES (13,'王五',{^2022.02.10},20) && 故意颠倒日期
insert into  T1 (序号,姓名,日期,收支) VALUES (14,'王五',{^2022.02.11},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (15,'张三',{^2022.02.05},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (16,'李四',{^2022.02.06},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (17,'王五',{^2022.02.11},10)

insert into  T1 (序号,姓名,日期,收支) VALUES (1,'张三',{^2022.02.02},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (2,'张三',{^2022.02.02},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (3,'张三',{^2022.02.03},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (4,'李四',{^2022.02.03},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (5,'李四',{^2022.02.04},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (6,'王五',{^2022.02.04},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (7,'王五',{^2022.02.04},10)

insert into  T1 (序号,姓名,日期,收支) VALUES (8,'张三',{^2022.02.05},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (9,'张三',{^2022.02.06},20)
insert into  T1 (序号,姓名,日期,收支) VALUES (10,'张三',{^2022.02.07},-10)
insert into  T1 (序号,姓名,日期,收支) VALUES (11,'李四',{^2022.02.08},10)
insert into  T1 (序号,姓名,日期,收支) VALUES (12,'李四',{^2022.02.09},-10)

BROWSE

*!* VFP 方法处理

SELECT * FROM T1 ORDER BY 日期 ASC ,序号 ASC INTO CURSOR T1 READWRITE  && 重新按日期,序号排序
n流水 = 0
d日期 = {}
SCAN
   IF 日期 = d日期
      n流水 = n流水 + 1
   ELSE
      n流水 = 1
   ENDIF
   d日期 = 日期
   REPLACE 流水号 WITH PADL(YEAR(日期),4,'20')+PADL(MONTH(日期),2,'0')+PADL(DAY(日期),2,'0')+PADL(n流水,2,'0')
ENDSCAN

*!* 看看效果
BROWSE

2022-07-14 13:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
有一句强迫症

程序代码:
SET DATE TO ANSI
SET CENTURY ON
SET MARK TO '.'
CREATE CURSOR  tt (日期 D,流水号 C(10))
INSERT INTO tt VALUES ({^2022.02.01}, "")
INSERT INTO tt VALUES ({^2022.02.02}, "")
INSERT INTO tt VALUES ({^2022.02.02}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.03}, "")
INSERT INTO tt VALUES ({^2022.02.04}, "")
INSERT INTO tt VALUES ({^2022.02.04}, "")
d = CTOD("")
n = 0
** REPLACE ALL 流水号 WITH EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
UPDATE tt SET 流水号 = EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
BROWSE 
2022-07-14 15:06
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
还能这样用的。。。
UPDATE tt SET 流水号 = EXECSCRIPT("n=IIF(日期==d,n+1,1)"+0h0D+"d=日期"+0h0D+"return RIGHT(DTOS(d),4)+PADL(n,2,'0')")
2022-07-14 17:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 7楼 mywisdom88
就是将好多句写成一句,这样做没有什么优点。
2022-07-14 17:29
bdx808
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2009-5-9
得分:0 
学习了
2022-07-25 10:03
小805805
Rank: 2
等 级:论坛游民
帖 子:24
专家分:20
注 册:2021-2-28
得分:0 
学习了
2022-09-08 21:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509103-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.125882 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved