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

एसक्यूएल एक पंक्ति से एकाधिक पंक्ति कैसे बनाएं

कोशिश करें:

DECLARE @YourTable table (YourDate datetime, value int)

insert into @YourTable VALUES ('2011-7-12',5)

;WITH AllNumbers AS
(
    SELECT 0 AS Number
    UNION ALL
    SELECT Number+1
        FROM AllNumbers
        WHERE Number<4
)
SELECT 
    dateadd(month,number,DATEADD(month,DATEDIFF(month,0,YourDate),0))
    FROM @YourTable        y
    INNER JOIN AllNumbers  a ON 1=1

आउटपुट:

-----------------------
2011-07-01 00:00:00.000
2011-08-01 00:00:00.000
2011-09-01 00:00:00.000
2011-10-01 00:00:00.000
2011-11-01 00:00:00.000

(5 row(s) affected)

यह तालिका में कई पंक्तियों के साथ काम करता है, यहां देखें:

DECLARE @YourTable table (YourDate datetime, ValueOf int)

insert into @YourTable VALUES ('2011-7-12',5)
insert into @YourTable VALUES ('2012-4-24',6)

;WITH AllNumbers AS
(
    SELECT 0 AS Number
    UNION ALL
    SELECT Number+1
        FROM AllNumbers
        WHERE Number<4
)
SELECT 
    y.ValueOf
        ,dateadd(month,number,DATEADD(month,DATEDIFF(month,0,y.YourDate),0))
    FROM @YourTable        y
    INNER JOIN AllNumbers  a ON 1=1
    ORDER BY 1,2

आउटपुट:

ValueOf     
----------- -----------------------
5           2011-07-01 00:00:00.000
5           2011-08-01 00:00:00.000
5           2011-09-01 00:00:00.000
5           2011-10-01 00:00:00.000
5           2011-11-01 00:00:00.000
6           2012-04-01 00:00:00.000
6           2012-05-01 00:00:00.000
6           2012-06-01 00:00:00.000
6           2012-07-01 00:00:00.000
6           2012-08-01 00:00:00.000

(10 row(s) affected)

साथ ही, मेरे पास SQL ​​Server 2008 उपलब्ध नहीं है, इसलिए मैंने डेटाटाइम का उपयोग किया, यदि आपके पास 2008 है, तो आप DATE का उपयोग कर सकते हैं डेटाटाइप और आपको डेटाटाइम को फ़्लोर करने की ज़रूरत नहीं है, इसलिए इस लाइन का उपयोग करें:

dateadd(month,number,y.YourDate)


  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. SqlDateTime.MinValue!=DateTime.MinValue, क्यों?

  3. संग्रहीत कार्यविधि के पैरामीटर नाम खोजें

  4. CTE के साथ IF EXISTS का उपयोग करना

  5. किसी मान को अनज़िप करने के लिए TSQL का उपयोग करना