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

किसी दिनांक सीमा के भीतर तालिका से सभी दिनांकों का चयन करना और प्रति रिक्त दिनांक में 1 पंक्ति शामिल करना

अनुपलब्ध पंक्तियों से निपटने के कई तरीके हैं, लेकिन सभी आपके वर्तमान परिणामों के साथ संयोजन करने के लिए डेटा का एक और सेट रखने के बारे में हैं।

यह आपके परिणामों से प्राप्त किया जा सकता है, जो एक सीटीई या अन्य प्रक्रिया (जैसे आपका उदाहरण), या (मेरी वरीयता) द्वारा स्थायी टेम्पलेट का उपयोग करके बनाया गया है। के खिलाफ शामिल होने के लिए।

आपके मामले में टेम्प्लेट सिर्फ तारीखों की एक तालिका हो सकती है, जैसे कि आपका @datesTBL। अंतर यह है कि इसे पहले से बनाया गया है, उदाहरण के लिए, 100 साल की तारीखों के साथ।

तब आपकी क्वेरी आपके उदाहरण के समान हो सकती है, लेकिन मैं निम्नलिखित का प्रयास करूंगा...

SELECT 
    dt.tempDate ,
    InstructorID,           EventStart, 
    EventEnd,               cancelled, 
    cancelledInstructor, 
    EventType,              DevName, 
    Room,                   SimLocation, 
    ClassLocation,          Event, 
    Duration,               TrainingDesc, 
    Crew,                   Notes, 
    LastAmended,            InstLastAmended, 
    ChangeAcknowledged,     Type, 
    OtherType,              OtherTypeDesc, 
    CourseType 
FROM 
  @datesTBL dt 
LEFT OUTER JOIN
  OpsInstructorEventsView iv
    ON  iv.EventStart >= dt.tempDate
    AND iv.EventStart <  dt.tempDate + 1
    AND iv.InstructorID = @InstructorID 
WHERE
      dt.tempDate >= @StartDate
  AND dt.tempDate <= @EndDate
ORDER BY
  dt.tempDate,
  iv.EventStart

यह कैलेंडर टेम्पलेट . डालता है बाईं ओर, और इसलिए कई प्रश्नों को आसान बनाता है क्योंकि आप जानते हैं कि कैलेंडर का दिनांक फ़ील्ड हमेशा पॉप्युलेट होता है, हमेशा केवल एक दिनांक (कोई समय भाग नहीं) मान होता है, क्रम में होता है, ग्रुप बाय, आदि के लिए आसान होता है।



  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. टी-एसक्यूएल के साथ एक पंक्ति अपडेट करें

  3. Sql सर्वर में समूहीकृत पंक्तियों का औसत

  4. एंटिटी फ्रेमवर्क क्वेरी प्रदर्शन कच्चे SQL निष्पादन के साथ चरम से भिन्न होता है

  5. कुप्पी-SQLAlchemy .count () और .all () के लिए अलग रिकॉर्ड गिनती