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

एसक्यूएल घटनाओं की गिनती रखते हुए

ROW_NUMBER() . का उपयोग करना सबसे आसान (और शायद सबसे कुशल) तरीका है :

SELECT [Date], Code, [Count] = ROW_NUMBER() OVER (PARTITION BY Code ORDER BY [Date])
 FROM dbo.YourTableName
 ORDER BY [Date];

मनोरंजन के लिए, आप इसे SQL Server 2012 में भी इस तरह से हल कर सकते हैं। यदि Date अद्वितीय है:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
  RANGE UNBOUNDED PRECEDING)
 FROM dbo.YourTable
 ORDER BY [Date];

या अधिक सरलता से:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date])
 FROM dbo.YourTable
 ORDER BY [Date];

अगर Date अद्वितीय नहीं है, और यदि आप संबंध नहीं चाहते हैं (दिनांक+कोड के समान संयोजनों के लिए समान गणना), तो आपको अधिक महंगे ROWS का उपयोग करने की आवश्यकता है , जो ऑन-डिस्क स्पूल पर उपयोग करता है:

SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
  ROWS UNBOUNDED PRECEDING)
 FROM dbo.YourTable
 ORDER BY [Date];

प्रदर्शन कैसा है यह देखने के लिए आप अपनी तालिका में इनमें से प्रत्येक विकल्प को आज़माना चाह सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. परिकलित माप के रूप में SSAS आयाम विशेषता

  2. केस कंडीशन और SUM () के साथ सेलेक्ट क्वेरी

  3. समूहीकरण के आधार पर रिटर्न कॉलम के साथ SQL क्वेरी

  4. क्या किसी पंक्ति को अद्यतन करना, या उसे हटाना और एक नया सम्मिलित करना तेज़ है?

  5. SQL कमांड का उपयोग करके SQL Server 2005 में दिन का नाम दिए गए दिन के नाम को आप कैसे प्रिंट करते हैं?