Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sql Server 2008 MERGE - najlepszy sposób na liczenie

Możesz określić klauzulę OUTPUT w instrukcji MERGE i uzyskać raport wyjściowy o tym, co zostało zrobione podczas 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'
;

To da ci wiersz dla każdej "akcji" (wstaw, zaktualizuj, usuń) dla każdej operacji. Jeśli jest dużo instrukcji, możesz również WYJŚĆ DO @tableVar, a następnie spojrzeć na zmienną tabeli.

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

Sprawdź Books Online, aby uzyskać szczegółowe informacje na temat MERGE oświadczenie i klauzula OUTPUT .

Marek



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekroczenie limitu czasu zapytania po wykonaniu z sieci, ale superszybkie po wykonaniu z SSMS

  2. SQL Server zlicza liczbę odrębnych wartości w każdej kolumnie tabeli

  3. Musisz obliczyć według zaokrąglonej godziny lub daty na serwerze sql

  4. Uruchomienie skryptu wykonanego przez wygenerowanie skryptu na innym serwerze daje błąd

  5. Próba zalogowania się przy użyciu uwierzytelniania SQL nie powiodła się