以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]后台按记录序号由大到小取相同阶数的记录序号 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158534) |
||||
-- 作者:绿火柴 -- 发布时间:2020/11/23 15:31:00 -- [求助]后台按记录序号由大到小取相同阶数的记录序号 后台按记录序号由大到小取相同阶数的记录序号 如题,在SQL中如何取出来? 如图所示:如果本行阶数=(向上查找,找到相同阶数的),则把记录序号标识在MAX中。 在EXCEL里或在狐表加载数据后,都很容易取,但目前数据量有几十万行。太慢。需要后台处理。
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/23 15:43:00 -- 请导出部分数据测试一下 |
||||
-- 作者:绿火柴 -- 发布时间:2020/11/23 15:58:00 -- 请蓝版帮看下,
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/23 17:22:00 -- update {BOM} As a,{BOM} As b set a.[max] = b.记录序号 where b.阶数=a.阶数 And b.记录序号 < a.记录序号 And a.阶差 = -1 |
||||
-- 作者:绿火柴 -- 发布时间:2020/11/23 19:52:00 -- 蓝版,查找时应该是从(本记录序号-1)的最大记录序号向最小记录序号查询更新。 如下图:15行的MAX=13才对的。麻烦再帮看下。 ![]() ![]() [此贴子已经被作者于2020/11/23 19:53:10编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/23 21:19:00 -- access没有办法,不支持子查询。 如果是SqlServer,这样 update a set a.[max] = (Select max(记录序号) from {BOM} As b where b.阶数=a.阶数 And b.记录序号 < a.记录序号 And a.阶差 = -1) from {BOM} As a
|
||||
-- 作者:绿火柴 -- 发布时间:2020/11/23 21:55:00 -- 小工具,是个人使用的。目前只能是ACCESS数据库 能不能,access 创建一个中转表 ,如BOMTEMP.把查询到结果,先存储到这个表中。然后再让BOM与BOMTEMP两个表关联,并更新BOM中的MAX
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/23 22:37:00 -- 搞不定 |
||||
-- 作者:绿火柴 -- 发布时间:2020/11/24 10:16:00 -- 蓝版,帮看下这样可以吗,还有没有可优化的地方。 我的思路是1建立中转表(BOMTEMP),删除所有行,再把查询结果插入到表中。2让BOM表与中转表连接找到最大记录 [此贴子已经被作者于2020/11/24 10:16:21编辑过]
|
||||
-- 作者:绿火柴 -- 发布时间:2020/11/24 10:18:00 -- 本来是想在ACCESS中建立个查询方案,然后让BOM与查询方案连接取最大记录序号。但行不通。 |