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

YYYYMM00 की निरंतर अवधि पर MIN और MAX दिनांक खोजें

यह एक प्रकार की गैप्स-एंड-आइलैंड समस्या है। यह SQL सर्वर 2005 जैसे गैर-समर्थित प्राचीन सॉफ़्टवेयर में भी हल करने योग्य है, क्योंकि उस संस्करण में row_number() है ।

एक तरकीब है टाइम आईडी को सच्चाई . में बदलना दिनांक और समय। दूसरी तरकीब यह है कि तारीख/समय मान से महीनों की क्रमिक संख्या घटाकर समूहों को परिभाषित किया जाए:

select player, team, min(timeid), max(timeid)
from (select lp.*,
             row_number() over (partition by player, team order by timeid) as seqnum,
             cast(cast(timeid + 1 as varchar(255)) as datetime) as yyyymm
      from logplayer lp
     ) lp
group by player, team, dateadd(month, - seqnum, yyyymm)
order by player, team, min(timeid);

यहां एक डीबी<>बेला है।



  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 सर्वर समस्याओं को खोजें, प्राथमिकता दें और हल करें

  3. EXISTS बनाम जॉइन और EXISTS क्लॉज का उपयोग

  4. ssms में संग्रहीत कार्यविधि को संशोधित करने के लिए शॉर्टकट कुंजी

  5. एसक्यूएल सर्वर संग्रहीत प्रक्रिया में उपयोग करने के लिए सी # में उपयोगकर्ता परिभाषित तालिका प्रकार बनाएं