如果 ID 在 sql 中不存在,则向分组表中添加新行

问题描述 投票:0回答:0

我有一个表(Table1),它的行数超过 1000,并且列数超过 30。我只写有趣的列(ID,relatedID,Name)当我有相同的组时,ID 是相同的,relatedID 是将一个人与其他人区分开来,名称在所有行中都是相同的,即组名,这是我的数据示例。

      ID, relatedID,Name  
-----------------------------------------                                                                                       
       1234, 23,office                                                                                                                                
       1234, 56, office                                                                                               
       1234, 87, office                                                                                              
       999,  1,  office                                                                                                  
       999, 58, office                                                                                             
       876, 23,  office 
                                                                                      

现在我想在所有ID组中添加一个人如果这个人(realatedID)不存在,如果这个ralatedID不存在,其他列将保持不变,其中只有一个新的relatedID的新行。我的桌子应该是这样的:

                                 ID, relatedID,Name  
                          -----------------------------------------                                                                                       
                                 1234, 23,office                                                                                                                                
                                 1234, 56, office                                                                                               
                                 1234, 87, office  
                                 1234, 1111, office   --here                                                                                         
                                 999,  1,  office                                                                                                  
                                 999, 58, office 
                                 999, 1111, office   --here                                                                                         
                                 876, 23,  office    
                                 876, 1111, office   --here

我试着写一段代码,将数据保存在一个新的临时表 (#t) 中,然后更新我的原始表 (Table1),但我不知道我必须如何继续。

enter code here

SELECT     identifier,title,
        (FORMAT( registerDate, 'yyyy-MM-dd', 'en-US' )) as Reg_Date,  
        GetText(ID) as relatedIDName, --this function has 1111 son input and return person 
        name
          INTO #t1
 FROM    InfoHeap INNER JOIN
         ObjProperties op ON  objectID = infoHeapID INNER JOIN
         InfoHeapCaseType ct ON ct.caseTypeID = InfoHeap.caseTypeID
        
 WHERE    moduleID = 100 and  typeID = 199 
         and registerDate between '2020-01-01' and '2022-12-31'
         

  Update #t1 Set relatedIDName = CONCAT_WS(',', relatedIDName, 'Dejana') --1111
          Where relatedIDName NOT LIKE '%Dejana%'
     --here I can't continue
     --INSERT into Table1
     -- SELECT Distinct t1.*, relatedPropID = 1111 --Related propID 
     --Where relatedPropID NOT LIKE 1111
sql insert ssms add
© www.soinside.com 2019 - 2024. All rights reserved.