【问题标题】:Selecting data between dates in SQL在 SQL 中选择日期之间的数据
【发布时间】:2013-12-27 22:38:40
【问题描述】:

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

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

我想在我的网格视图中显示某个状态的日期和状态。

例如

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

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

【问题讨论】:

  • dateTo 由用户输入或由您传递,或者您想为当前日期计算它?

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


【解决方案1】:
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

【讨论】:

    【解决方案2】:

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

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

    SQLFiddle demo

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2012-04-17
      相关资源
      最近更新 更多