T-SQL查询过程-插入

T-SQL query procedure-insert

我想知道你们中是否有人能帮助我。我正在尝试遍历 table 1(它具有重复的工厂代码值)并基于唯一的工厂代码,为另外两个 table 创建一个新记录。对于每个唯一的 Plant 代码,我想在其他两个 table 中创建一个新行,并且关于非唯一的 PtypeID I link 所有插入的 PTypeID 中的任何一个,我选择哪个都无关紧要其余字段,如名称等。我想自己设置这些字段,我只是坚持如何基于循环某个 table 并添加到另一个来插入的逻辑。所以这是数据:

   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

如有任何帮助,我们将不胜感激

我不清楚 Table 1 和其他两个中的任何一个之间有什么关系,所以这会有点笼统。

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

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

这会获取与 PlantCode 关联的最低值 PTypeId。如果需要,您可以使用 max(PTypeId) 来获取最高值:for 'USA' min 将为您提供 11,max 将为您提供 12.

select编辑该数据后,您可以编写一些代码(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...

希望对您有所帮助。