数据表Table1 里的数据如下:序号 品名 规格 数量 材料 标准 工艺
1 A001 20*20 10 304H ASME 冷成型
2 A002 10*20 10 304H ASME 冷成型
3 A003 30*20 10 304H ASME 冷成型
4 A004 50*20 10 304H ASME 冷成型
5 A005 60*20 10 304H ASME 冷成型
6 A006 70*20 10 304H ASME 冷成型
7 A006 70*20 10 316L GB106 冷成型如何将表Table1 里 材料,标准,工艺相同的每五条生成一个主从表数据,主表结构为:材料、标注、工艺,从表结构为:品名、规格、数量。也就是说上面所列出来的数据要生成三个主从表:“304H ASME 冷成型” 总共有6条相同所以生成两个主从表数据,“316L GB106 冷成型”生成一个主从表数据
1 A001 20*20 10 304H ASME 冷成型
2 A002 10*20 10 304H ASME 冷成型
3 A003 30*20 10 304H ASME 冷成型
4 A004 50*20 10 304H ASME 冷成型
5 A005 60*20 10 304H ASME 冷成型
6 A006 70*20 10 304H ASME 冷成型
7 A006 70*20 10 316L GB106 冷成型如何将表Table1 里 材料,标准,工艺相同的每五条生成一个主从表数据,主表结构为:材料、标注、工艺,从表结构为:品名、规格、数量。也就是说上面所列出来的数据要生成三个主从表:“304H ASME 冷成型” 总共有6条相同所以生成两个主从表数据,“316L GB106 冷成型”生成一个主从表数据
楼主意思:增加一列主从表键值,以构主从表表?序号 品名 规格 数量 材料 标准 工艺 [pkey]
1 A001 20*20 10 304H ASME 冷成型 P001
2 A002 10*20 10 304H ASME 冷成型 P001
3 A003 30*20 10 304H ASME 冷成型 P001
4 A004 50*20 10 304H ASME 冷成型 P001
5 A005 60*20 10 304H ASME 冷成型 P001
6 A006 70*20 10 304H ASME 冷成型 P002
7 A006 70*20 10 316L GB106 冷成型 P003
从表的字段就是品名,规格,数量
上面的数据生成三个主从表数据(材料、标准、工艺相同的每五条生成一个主从表数据也就是说如果是小于等于五条则生成一个主从表数据,大于五条就每五条生成一个主从表数据,比如12条则生成3个主从表数据)
分别为
主表数据 材料 标准 工艺
304H ASME 冷成型
从表数据: 品名 规格 数量
A001 20*20 10
A002 10*20 10
A003 30*20 10
A004 50*20 10
A005 60*20 10主表数据 材料 标准 工艺
304H ASME 冷成型
从表数据: 品名 规格 数量
A006 70*20 10
主表数据 材料 规格 工艺
316L GB106 冷成型
从表数据: 品名 规格 数量
A006 70*20 10
主表和从表使用表名对应?
首先,不太理解你为什么要这样做,这样的设计非常非常不正规,当然,这是你自己的事情。
要想做到这个,你需要写SQL的脚本,SELECT已经解决不了了,大体思路如下:
1. 首先,定义游标,按照“材料 标准 工艺”DESC
2. 定义计数器(INT)和当前“材料 标准 工艺”组合的内容。
3. 使用循环,游标在循环中从头到尾,当“材料 标准 工艺”组合内容发生变化,或者计数器超过5时,建新主表和从表(表名你自己想吧),插入数据。顺便说一句,这个会很慢,因为要建很多的表。
1. 建从表,表定义“序号,品名 规格 数量,主表序号”,用一个select把原表的数据导入,主表序号填原表序号。
2. 建主表,表定义“主表序号,材料 规格 工艺”,用一个select把原表的数据导入,主表序号填原表序号。
3. 将建好的主表,找到所有重复记录,方法如下:
SELECT t2.主表序号,
min(t1.主表序号)
FROM 主表 AS t1 INNER JOIN
主表 AS t2 ON (t1.材料 = t2.材料 AND t1.规格 = t2.规格 AND t1.工艺 = t2.工艺 AND t1.主表序号 < t2.主表序号)
GROUP BY (t2.主表序号)
这个表的意思是,首先找到所有重复的记录,t1 和 t2就是表明哪两个记录是一样的,然后用t2.主表序号 GROUP BY,取出最小的t1.主表序号,这个表就是所有重复记录(t2.主表序号)和所有与其重复的第一个记录。
4. 用这个临时数据,把从表中的主表序号更新,更新为min(t1.主表序号)
5. 用这个临时数据,把主表中对应重复记录全部删除。第三步会比较慢,有点心理准备。