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

महीने/वर्ष तालिका बनाने का बेहतर तरीका

मैं पहले से मौजूद सेटों का उपयोग करना पसंद करता हूं, क्योंकि यह महंगे रिकर्सिव सीटीई की तुलना में अक्सर अधिक कुशल होता है। यदि आपके पास संख्या तालिका है, तो इसका उपयोग करें; यदि आपके पास पहले से कैलेंडर तालिका है, तो और भी बेहतर; अन्यथा, आप बिल्ट इन ऑब्जेक्ट्स जैसे master.dbo.spt_values . का उपयोग कर सकते हैं :

DECLARE @FromDate DATETIME, @ToDate DATETIME;
SET @FromDate = '2012-01-01';
SET @ToDate = '2012-12-31';

-- all days in that period
SELECT TOP (DATEDIFF(DAY, @FromDate, @ToDate)+1) 
  TheDate = DATEADD(DAY, number, @FromDate)
  FROM [master].dbo.spt_values 
  WHERE [type] = N'P' ORDER BY number;

-- just the months in that period
SELECT TOP (DATEDIFF(MONTH, @FromDate, @ToDate)+1) 
  TheDate  = DATEADD(MONTH, number, @FromDate),
  TheMonth = MONTH(DATEADD(MONTH, number, @FromDate)),
  TheYear  = YEAR(DATEADD(MONTH, number, @FromDate))
  FROM [master].dbo.spt_values 
  WHERE [type] = N'P' ORDER BY number;

कुछ पृष्ठभूमि के लिए, देखें:




  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 सर्वर में एक ऑटो इंक्रीमेंट प्राथमिक कुंजी को कैसे परिभाषित करें

  2. मैं एक एसक्यूएल सर्वर 2008 डेटटाइम ऑफसेट को डेटटाइम में कैसे परिवर्तित कर सकता हूं?

  3. SQL सर्वर (T-SQL) में एक स्ट्रिंग का बायाँ भाग प्राप्त करें

  4. SQL सर्वर में (nolock) के साथ क्या है?

  5. एक कॉलम में वस्तुओं और उनके मूल्यों की गिनती प्राप्त करें