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

SQL सर्वर क्वेरी - कमरों की उपलब्धता की गणना करें

क्वेरी के नीचे आज़माएं

DECLARE @Reservation TABLE ( BookDate DATE, ROOMS INT)
 INSERT INTO @Reservation VALUES 
('1-Jul-2015',30 ), 
('2-Jul-2015',30 ),
('3-Jul-2015',30 ),
('5-Jul-2015',28 ),
('6-Jul-2015',28 ),
('7-Jul-2015',28 ),
('8-Jul-2015',30 ),
('9-Jul-2015',30 ),
('10-Jul-2015',26 ),
('11-Jul-2015',28 ),
('12-Jul-2015',28 )


    ;WITH
    cte AS (
        select ROW_NUMBER() OVER(ORDER BY BookDate) AS RowNumber,
        [ROOMS], BookDate FROM @Reservation
    ),
    cte2 as (
        SELECT TOP 1 RowNumber, 1 as GroupNumber, [ROOMS], BookDate FROM cte ORDER BY RowNumber
        UNION ALL
        SELECT c1.RowNumber,
            CASE WHEN c2.[ROOMS] <> c1.[ROOMS] then c2.GroupNumber + 1 ELSE c2.GroupNumber END AS  GroupNumber, c1.[ROOMS], c1.BookDate 
        FROM cte2 c2 join cte c1 on c1.RowNumber = c2.RowNumber + 1     
    )
    SELECT Start_Date, End_Date, Rooms
    FROM
    (   SELECT MIN(BookDate) AS START_DATE, MAX(BookDate) AS END_DATE ,ROOMS, GroupNumber
        FROM cte2
        GROUP BY  ROOMS ,GroupNumber
    ) a

SQLFiddler डेमो



  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. पाइप सीमांकित टेक्स्ट फ़ाइल डेटा को SQLServer तालिका में कैसे आयात करें

  3. sql सर्वर का उपयोग करके सप्ताहांत को छोड़कर DATEDIFF प्राप्त करें

  4. <तालिका-मूल्यवान फ़ंक्शन> एक मान्यता प्राप्त अंतर्निहित फ़ंक्शन नाम नहीं है

  5. मैं R2008 sql सर्वर पर मौजूदा संग्रहीत प्रक्रिया या उस प्रक्रिया के sql कथन को चलाकर सर्वर पर दस्तावेज़ कैसे बना सकता हूं