Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

Sql Server 2008 MERGE - गणना करने का सबसे अच्छा तरीका

आप अपने MERGE स्टेटमेंट पर एक OUTPUT क्लॉज निर्दिष्ट कर सकते हैं और 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'
;

यह आपको प्रत्येक ऑपरेशन के लिए प्रत्येक "कार्रवाई" (सम्मिलित करें, अपडेट करें, हटाएं) के लिए एक पंक्ति देगा। यदि यह बहुत सारे कथन हैं, तो आप @tableVar में भी आउटपुट कर सकते हैं और फिर तालिका चर को देख सकते हैं।

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

MERGE पर विवरण के लिए ऑनलाइन पुस्तकें देखें। स्टेटमेंट और OUTPUT क्लॉज

मार्क



  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 Server 2008 और SQL Server 2008 R2 चलाने वाले उपयोगकर्ता ध्यान दें

  2. INNER जॉइन का उपयोग करके SQL सर्वर में एकाधिक तालिकाओं को अपडेट करें

  3. एसक्यूएल की तरह क्वेरी धीमी है अगर घोषित पैरामीटर का उपयोग कर रहा है लेकिन तेज नहीं है तो

  4. SQL सर्वर आंतरिक:समस्याग्रस्त ऑपरेटर्स पं। III - सॉर्ट

  5. दिनांक को YYYYMM प्रारूप में बदलें