繁体   English   中英

T-SQL查询过程-插入

[英]T-SQL query procedure-insert

我想知道你们中谁能帮助我。 我试图遍历表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;

并在其后insert.... select...类似的insert.... select...

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM