sql >> データベース >  >> RDS >> Sqlserver

SQL Server クエリ - 空室状況を計算する

    以下のクエリを試してください

    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. 大文字化を自動化できる列を定義するにはどうすればよいですか?

    2. PandasWrite_Frameを使用して結果をcx_OracleのOracleデータベースにエクスポートする方法

    3. PostgreSQLのタイムスタンプに基づく移動平均

    4. MySql:サブクエリを作成し、2つのテーブルでidが同じであるすべての行をカウントする方法