在SQL中选择日期之间的数据

时间:2013-12-10 12:03:16

标签: asp.net sql gridview sql-server-2012

我正在使用SQL Server 2012,我想创建一个可以在gridview中使用的查询。

基本上,数据是状态列表(限制,不可用和可用),每个状态都有一个日期时间。

我想在gridview中显示某个状态的日期和状态。

所以例如

enter image description here

我遇到的另一个问题是网格的顶线,即如果今天状态发生变化,我需要表明这一点。

我的SQL技能达不到这一点所以提供的任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

在MSSQL 2012中,您可以使用LEAD()函数

select Status,
       StartDate,
       LEAD(StartDate, 1,null) 
         OVER (ORDER BY startDate) 
        as EndDate
FROM T
ORDER BY StartDate

SQLFiddle demo

答案 1 :(得分:0)

SELECT
  Status_Current.yourDate   AS Date_From,
  Status_Next.yourDate      AS Date_To,
  Status_Current.yourStatus AS Status
FROM
  yourData   AS Status_Current
LEFT JOIN
  yourData   AS Status_Next
    ON Status_next.yourData = (SELECT TOP 1 lookup.yourDate
                                 FROM yourData   AS lookup
                                WHERE lookup.yourDate > Status_Current.yourDate
                             ORDER BY lookup.yourDate ASC
                              )
ORDER BY
  Status_Current.yourDate DESC