“Merge” style operation with literal values?

后端 未结 3 859
深忆病人
深忆病人 2020-12-29 08:00

I have a table containing a student-grade relationship:

Student   Grade   StartDate   EndDate
   1        1    09/01/2009    NULL
   2        2    09/01/2010         


        
3条回答
  •  情书的邮戳
    2020-12-29 08:30

    I prefer the following, it is cleaner and easier to read and modify.

    MERGE Definition.tdSection AS Target
    USING
        (SELECT *
         FROM   ( VALUES
                ( 1, 1, 'Administrator', 1, GETDATE(), NULL, Current_User, GETDATE())
                 ,( 2, 1, 'Admissions', 1, GETDATE(), NULL, Current_User, GETDATE())
                 ,( 3, 1, 'BOM', 1, GETDATE(), NULL, Current_User, GETDATE())
                 ,( 4, 1, 'CRC', 1, GETDATE(), NULL, Current_User, GETDATE())
                 ,( 5, 1, 'ICM', 1, GETDATE(), NULL, Current_User, GETDATE())
                 ,( 6, 1, 'System', 1, GETDATE(), NULL,Current_User, GETDATE())
                 ,( 7, 1, 'Therapy', 1, GETDATE(), NULL, Current_User, GETDATE()) 
                )
                AS s (SectionId
                      ,BusinessProcessId
                      ,Description, Sequence
                      ,EffectiveStartDate
                      ,EffectiveEndDate
                      ,ModifiedBy
                      ,ModifiedDateTime)
         ) AS Source
    ON Target.SectionId = Source.SectionId
    WHEN NOT MATCHED THEN
        INSERT (SectionId
               ,BusinessProcessId
               ,Description
               ,Sequence
               ,EffectiveStartDate
               ,EffectiveEndDate
               ,ModifiedBy
               ,ModifiedDateTime
               )
        VALUES (Source.SectionId
               ,Source.BusinessProcessId
               ,Source.Description
               ,Source.Sequence
               ,Source.EffectiveStartDate
               ,Source.EffectiveEndDate
               ,Source.ModifiedBy
               ,Source.ModifiedDateTime
               );
    

提交回复
热议问题