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

INSERTED में नहीं मान डालने के लिए OUTPUT क्लॉज का उपयोग करना

MERGE का उपयोग करें INSERT . के बजाय :

MERGE
INTO    trn_temp d
USING   (
        SELECT  D.DET_DATE, 'SOMETEXT' AS sometext, SUM(D.DET_NET) AS the_sum
        ...
        ) s
ON      (1 = 0)
WHEN NOT MATCHED THEN
INSERT  (TRN_TRAN_DATE, TRN_DESCRIPTION, TRN_AMT)
VALUES  (det_date, sometext, the_sum)
OUTPUT  s.*

अपडेट करें:

GROUP BY के आसपास काम करने के लिए समस्या, इसका उपयोग करें:

DECLARE @tmp TABLE
        (
        det_primary INT NOT NULL PRIMARY KEY
        )

MERGE
INTO    register r
USING   detail d
ON      (r.det_primary_link = d.det_primary)
WHEN NOT MATCHED THEN
INSERT  (det_primary_link, ins_date)
VALUES  (det_primary, GETDATE())
OUTPUT  d.det_primary
INTO    @tmp;

INSERT
INTO    trn_temp (trn_tran_date, trn_description, trn_amt)
OUTPUT  INSERTED.*
SELECT  det_date, 'sometext', SUM(det_net)
FROM    @tmp t
JOIN    detail d
ON      d.det_primary = t.det_primary
GROUP BY
        det_date


  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 सर्वर में पदानुक्रमित संबंधों को एक साथ कैसे समूहित करें

  2. SQL सर्वर (T-SQL) में डेटाबेस मेल के लिए कॉन्फ़िगरेशन सेटिंग्स की जाँच कैसे करें

  3. SQL सर्वर के लिए शीर्ष 5 डेटा मॉडलिंग उपकरण

  4. SQL सर्वर में Oracle के PRIOR द्वारा कनेक्ट का अनुकरण

  5. एसएसआईएस 2008 का उपयोग कर एक्सेल को एसक्यूएल में आयात करते समय पंक्तियों को छोड़ना