sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 MERGE - bästa sättet att få räkningar

Du kan specificera en OUTPUT-klausul på din MERGE-sats och få en utdatarapport över vad som har gjorts under MERGE.

MERGE (targetTable) AS t 
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
  (some statements)
WHEN NOT MATCHED THEN
  (some statements)
OUTPUT
  $action, inserted.ID 'inserted', deleted.ID 'deleted'
;

Detta ger dig en rad för varje "åtgärd" (infoga, uppdatera, ta bort) för varje operation. Om det är många påståenden, kan du också UTMATNING INTO @tableVar och sedan titta på tabellvariabeln.

DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)

MERGE (targetTable) AS t 
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
      (some statements)
WHEN NOT MATCHED THEN
      (some statements)
OUTPUT
      $action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
;

SELECT MergeAction, COUNT(*) 
FROM @tableVar  
GROUP BY MergeAction

Kolla in Books Online för mer information om SAMMANSLUTNING uttalande och OUTPUT-klausulen .

Marc



  1. cx_Oracle - DLL-laddning misslyckades:%1 är inte ett giltigt Win32-program. pytonorm

  2. Räkna på varandra följande numeriska värden i SQL

  3. Postgresql Skapa unikt index

  4. När returneras anslutningar till anslutningspoolen med Spring JPA (Hibernate) Entity Manager?