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

उन रिकॉर्ड्स का चयन कैसे करें जो Sql सर्वर में मौजूद नहीं हैं

आप इसे पुनरावर्ती CTE<के साथ कर सकते हैं /ए> . कुछ इस तरह:

DECLARE @startDate datetime = '2/1/2014'
DECLARE @endDate datetime = '2/6/2014'

;WITH DateRange(RunningDate) AS
(
    SELECT @startDate AS RunningDate
    UNION ALL
    SELECT RunningDate + 1
    FROM DateRange
    WHERE RunningDate < @endDate
)

SELECT id, RunningDate date, value1, value2 
FROM DateRange LEFT JOIN myTable ON myTable.date = DateRange.RunningDate

संपादित करें... यदि आप इस समाधान के साथ जाते हैं (मेरे उत्तर के तहत हारून बर्ट्रेंड की टिप्पणी पर ध्यान दें), ध्यान दें कि आपको अधिकतम पुनरावर्तन यदि आप 3 महीने से अधिक की अवधि से निपटने का इरादा रखते हैं। डिफ़ॉल्ट 100 पर सेट है। इसका मतलब है कि, जैसा कि वर्तमान में क्वेरी लिखी गई है, यह अधिकतम 101 तिथियां (पुनरावृत्ति के 100 स्तर) ही करेगी।

आप इसके अतिरिक्त OPTION (MAXRECURSION 0) . निर्दिष्ट कर सकते हैं अंतिम के अंत में SELECT इस पर काबू पाने के लिए। 0 का अर्थ है अनंत स्तर की पुनरावृत्ति। लेकिन फिर से, हारून की पोस्ट पर ध्यान दें।



  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 सर्वर प्रबंधन स्टूडियो 2008 में जेनरेट स्क्रिप्ट कार्य को स्वचालित कैसे कर सकता हूं?

  2. किसी भिन्न सर्वर पर SQL डेटाबेस को इंगित करने के लिए USE जैसा कार्य?

  3. खंड SQL सर्वर 2008 के साथ का उपयोग करना

  4. MS SQL सर्वर में डेटाबेस स्कीमा परिवर्तन का स्वचालित डेटा संग्रह

  5. एक SRID से दूसरे SRID में ज्यामिति का रूपांतरण/प्रोजेक्ट करें