合并-匹配时不执行任何操作

时间:2019-10-31 09:55:20

标签: tsql

我需要编写MERGE语句以在未匹配条件时插入数据,而在匹配条件下我希望查询不执行任何操作,但是我必须包括此条件,因为我非常需要从这两个条件中捕获源数据进入我的输出表。

这是我的代码:

                MERGE dm_data_bps.dbo.akcja AS target
            USING (
                SELECT *
                FROM #CEIDG
                WHERE isnull(sp_id, '') <> ''
                ) AS source
                ON target.ak_id = source.ceidg_ak_id
            WHEN NOT MATCHED
                THEN
                    INSERT (
                        ak_akt_id
                        ,ak_sp_id
                        ,ak_kolejnosc
                        ,ak_interwal
                        ,ak_zakonczono
                        ,ak_pr_id
                        ,ak_publiczna
                        )
                    VALUES (
                        1246
                        ,sp_id
                        ,0
                        ,0
                        ,getdate()
                        ,5
                        ,1
                        )
            WHEN MATCHED
                THEN
                    UPDATE
                    <DO NOTHING>
            OUTPUT inserted.ak_id
                ,source.Firma
                ,source.AdresPocztyElektronicznej
                ,source.AdresStronyInternetowej
                ,source.IdentyfikatorWpisu
                ,source.DataRozpoczeciaWykonywaniaDzialalnosciGospodarczej
                ,source.DataZawieszeniaWykonywaniaDzialalnosciGospodarczej
                ,source.DataWznowieniaWykonywaniaDzialalnosciGospodarczej
                ,source.DataZaprzestaniaWykonywaniaDzialalnosciGospodarczej
                ,source.DataWykresleniaWpisuZRejestru
                ,source.MalzenskaWspolnoscMajatkowa
                ,source.SpolkiCywilneKtorychWspolnikiemJestPrzedsiebiorcaNIP
                ,source.SpolkiCywilneKtorychWspolnikiemJestPrzedsiebiorcaREGON
                ,source.Zakazy
                ,source.InformacjeDotyczaceUpadlosciPostepowaniaNaprawczego
                ,source.Sukcesja
                ,source.AdresGlownegoMiejscaWykonywaniaDzialalnosci
                ,source.AdresyDodatkowychMiejscWykonywaniaDzialalnosci
                ,source.AdresyDodatkowychMiejscWykonywaniaDzialalnosci2
                ,source.AdresDoDoreczen
                ,source.STATUS
            INTO #ceidg_ak_id;

我如何实现我的目标?

1 个答案:

答案 0 :(得分:2)

我不确定我是否会为r <- rbind(t(sapply(seq(length(list_vec)), function(k) {mat0[k,names(list_vec[[k]])] <- list_vec[[k]]; mat0[k,]}))) 语句带来的所有开销感到困扰。参见Use Caution with SQL Server's MERGE Statement

您可以通过显式事务获得所需的一切。

MERGE