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

एक निश्चित समय अवधि के भीतर कई लेन-देन, दिनांक सीमा तक सीमित

काश, SQL सर्वर 2005 में विंडो फ़ंक्शन पर्याप्त शक्तिशाली नहीं होते। मैं इसे एक सहसंबद्ध उपश्रेणी का उपयोग करके हल करूंगा।

सहसंबद्ध सबक्वेरी यह गिनता है कि किसी व्यक्ति ने प्रत्येक खरीदारी के बाद 14 दिनों के भीतर कितनी बार आइटम खरीदा (और पहली खरीदारी की गणना नहीं की)।

select t.*
from (select t.*,
             (select count(*)
              from t t2
              where t2.personnumber = t.personnumber and
                    t2.itemnumber = t.itemnumber and
                    t2.transactionnumber <> t.transactionnumber and
                    t2.transactiondate >= t.transactiondate and 
                    t2.transactiondate < DATEADD(day, 14, t.transactiondate
             ) NumWithin14Days
      from transactions t
      where transactionDate between '2001-01-01' and '2001-03-01'
     ) t
where NumWithin14Days > 0

आप समय सीमा को सबक्वायरी में भी रखना चाह सकते हैं।

transactions(personnumber, itemnumber, transactionnumber, itemdate) इसे बहुत तेजी से चलाने में मदद कर सकता है।



  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 में XML कॉलम को क्वेरी करने से कई पंक्तियों को वापस करना

  2. क्या टी-एसक्यूएल फ़ंक्शन उपयोगकर्ता द्वारा परिभाषित तालिका प्रकार लौटा सकता है?

  3. SSIS पैकेज त्रुटि के साथ विफल रहता है यदि 64-बिट ड्राइवर स्थापित नहीं है, तो 32-बिट मोड में चलाएँ

  4. XML के साथ SQL सर्वर 2005 में पदानुक्रम

  5. SQL सर्वर 2005 में, क्या मैं अपनी टेबल पर संपत्ति सेट किए बिना कैस्केड हटा सकता हूं?