我想知道你们中的任何人是否能够帮助我。我试图遍历表1(具有重复的工厂代码值),并基于唯一的工厂代码为其他两个表创建新记录。对于每个唯一的工厂代码,我想在其他两个表中创建一个新行,对于非唯一的PtypeID,我可以为所有插入内容链接任意一个PTypeID,无论选择哪种类型以及其余字段(例如名称等)都无关紧要。我想自己设置这些,我只是停留在如何基于循环访问某个表并添加到另一个表的逻辑上。所以这是数据:

   Table 1
PlantCode    PlantID      PTypeID
   MEX        1              10
   USA        2              11
   USA        2              12
   AUS        3              13
   CHL        4              14



   Table 2
PTypeID     PtypeName    PRID
 123         Supplier     1
 23          General      2
 45          Customer     3
 90          Broker       4
 90          Broker       5


   Table 3
      PCreatedDate            PRID         PRName
2005-03-21 14:44:27.157         1        Classification
2005-03-29 00:00:00.000         2        Follow Up
2005-04-13 09:27:17.720         3        Step 1
2005-04-13 10:31:37.680         4        Step 2
2005-04-13 10:32:17.663         5        General Process


任何帮助将不胜感激

最佳答案

我不清楚表1和其他两个表之间是什么关系,所以这有点笼统。

首先,有两个选项,并且都需要有一条select语句才能从table1中获取PlantCode的唯一值,以及与之关联的PTypeId之一,所以让我们这样做:

select PlantCode, min(PTypeId)
from table1
group by PlantCode;


这将获得与PlantCode关联的最低值的PTypeId。如果需要,可以使用max(PTypeId)代替它来获取最大值:对于'USA',min将给您11,max将给您12。

选择了这些数据后,您可以编写一些代码(C#,C ++,java等)来逐行读取结果,然后将新数据插入table2和table3中。我不会显示它,但是将显示如何使用纯SQL来实现。

insert into table2 (PTypeId, PTypeName, PRID)
select PTypeId, 'YourChoiceOfName', 24 -- set PRID to 24 for all
from
(
    select PlantCode, min(PTypeId) as PTypeId
    from table1
    group by PlantCode
) x;


并在表3后面加上类似的insert.... select...

希望能有所帮助。

10-07 15:02