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

संग्रहीत प्रक्रिया, बाएं जुड़ने से मुझे डुप्लिकेट पंक्तियां मिलती हैं, लेकिन मुझे एक ही आईडी के साथ प्रत्येक रिकॉर्ड के लिए शीर्ष (1) पंक्ति चाहिए

पहले मैं कुछ ऐसा ढूंढ रहा था जो मुझे बाएं जुड़ने के साथ शून्य कॉलम नहीं देगा, इसलिए मैंने इसका इस्तेमाल किया,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

तब मुझे ऐसी समस्या का सामना करना पड़ा जहाँ मुझे केवल बाएं जॉइन से शीर्ष 1 का चयन करने की आवश्यकता थी, इसलिए मैंने OUTER APPLY का उपयोग किया, जैसा कि नीचे दिखाया गया है,

SELECT Top(1)
    TableA.*,
        TableB.*,
        someFunction(TableA.ID),
        coalesce(TableC.someColumn, -1) As SomeColumnExample,
        TempTable.IDA
 FROM 
    TableA INNER JOIN TableB ON TableA.ID = TableB.IDA
    OUTER APPLY
         (SELECT TOP(1) * FROM TableC where TableC.IDA = TableA.IDA Order By DateAdded Desc )  As TempTable

Where TableA.ID = @ParaID
Order By TableC.DateTime Desc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उसी सर्वर पर किसी अन्य डेटाबेस के बैकअप से नया डेटाबेस बनाना?

  2. SQL सर्वर (T-SQL उदाहरण) में एक CHECK बाधा को कैसे सक्षम करें

  3. SQL सर्वर 2008 और हैशबाइट्स

  4. SQL सर्वर:IN कथन में पैरामीटर द्वारा ऑर्डर करें

  5. संग्रहीत प्रक्रिया में सम्मिलित \ हटाए गए तालिका का उपयोग कैसे करें?