Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Sql Server 2008 MERGE - cara terbaik untuk mendapatkan hitungan

Anda dapat menentukan klausa OUTPUT pada pernyataan MERGE Anda dan mendapatkan laporan keluaran dari apa yang telah dilakukan selama 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'
;

Ini akan memberi Anda baris untuk setiap "tindakan" (masukkan, perbarui, hapus) untuk setiap operasi. Jika banyak pernyataan, Anda juga bisa OUTPUT INTO @tableVar dan kemudian melihat variabel tabel.

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

Lihat Buku Daring untuk detail tentang MERGE pernyataan dan klausa OUTPUT .

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Hapus duplikat

  2. Jangan tampilkan set pengembalian kosong

  3. Kelola Konkurensi Transaksi Menggunakan Kunci di SQL Server

  4. mengubah batasan DEFAULT pada kolom SQL

  5. Apakah ada cara untuk menentukan nama tabel sebagai string?