数据表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.   

    SELECT DISTINCT 材料 ,标准 ,工艺 from tb
      

  2.   

    MARK
    楼主意思:增加一列主从表键值,以构主从表表?序号 品名 规格 数量 材料 标准 工艺   [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
      

  3.   

    不是的,要从数据表Table1 中把 材料、标准、工艺相同的数据每5条生成一个新的主从表数据
      

  4.   

    主表的字段就是 材料、标准、工艺
    从表的字段就是品名,规格,数量
    上面的数据生成三个主从表数据(材料、标准、工艺相同的每五条生成一个主从表数据也就是说如果是小于等于五条则生成一个主从表数据,大于五条就每五条生成一个主从表数据,比如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
      

  5.   

    你是不是要产生一堆的数据库表啊?
    主表和从表使用表名对应?
    首先,不太理解你为什么要这样做,这样的设计非常非常不正规,当然,这是你自己的事情。
    要想做到这个,你需要写SQL的脚本,SELECT已经解决不了了,大体思路如下:
    1. 首先,定义游标,按照“材料 标准 工艺”DESC
    2. 定义计数器(INT)和当前“材料 标准 工艺”组合的内容。
    3. 使用循环,游标在循环中从头到尾,当“材料 标准 工艺”组合内容发生变化,或者计数器超过5时,建新主表和从表(表名你自己想吧),插入数据。顺便说一句,这个会很慢,因为要建很多的表。
      

  6.   

    欧,你以前写的和最后一次写的表述不一致,以最后一次的问题来回答:
    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. 用这个临时数据,把主表中对应重复记录全部删除。第三步会比较慢,有点心理准备。