T-SQL查询程序 - 插入

时间:2016-02-02 17:58:12

标签: mysql sql-server procedure

我想知道你们中是否有人能够帮助我。我试图循环遍历表1(具有工厂代码的重复值)并基于唯一的工厂代码,为另外两个表创建新记录。对于每个唯一的Plant代码,我想在其他两个表中创建一个新行,并且关于非唯一的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 个答案:

答案 0 :(得分:1)

我不清楚表1与其他两者之间的关系,所以这有点笼统。

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

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

这将获得与PlantCode关联的最低值的PTypeId。您可以使用max(PTypeId)代替它,如果您需要,它会获得最高值:因为'USA'分钟会给你11分,最大分数会给你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...

希望有所帮助。