sql-server - SQL 每行连续日期可用

标签 sql-server

如何使用 SQL 创建查询以获取每一行连续可用的房间。例如,我想找到连续 3 天至少有 3 个可用房间

原始表格

Date       Available rooms 
----       ---------------
01/12/16         4
02/12/16         5
03/12/16         5
04/12/16         5
05/12/16         4
06/12/16         0
07/12/16         3
08/12/16         4
09/12/16         4

结果如下

Date      EndDate       
--------  --------
01/12/16  03/12/16
02/12/16  04/12/16
03/12/16  05/12/16
07/12/16  09/12/16

最佳答案

尝试像下面的查询那样使用 LEAD() 函数

SELECT d as StartDate, EndDate
FROM
    (SELECT d, 
        CASE 
            WHEN available_rooms > 2 
                AND LEAD(available_rooms,1) OVER(order by d) > 2 
                AND LEAD(available_rooms,2) OVER(order by d) > 2 
            THEN LEAD(d,2) OVER(order by d) 
        END EndDate
    FROM table1 t) t1
WHERE EndDate is not null;

下面是我收到的输出

enter image description here

关于sql-server - SQL 每行连续日期可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41122750/

相关文章:

sql - 如何比较 SQL Server 中的时间?

java - 当服务器名称包含反斜杠 (localhost\TESTDATA) 时使用 JDBC

sql-server - "timestamp"真的被弃用了吗?

sql - 什么时候进行过滤?

sql-server - 如何将 sqlcmd 输出设置为批处理变量?

sql - 使用 SQL 查询删除十进制值

asp.net - 本地数据库文件的连接字符串不起作用

mysql - 如何将此使用 "EXCEPT"的 MSSQL 查询转换为 MySQL?

sql-server - 如果我没有在设置中输入密码,SQL Server 2012 的默认密码是什么?

sql - 对 SQL Server 执行计划进行基准测试以进行自动化测试?