【问题标题】:SQL query on rows with timestamp relative to another timestamp对具有相对于另一个时间戳的时间戳的行进行 SQL 查询
【发布时间】:2014-07-15 17:56:26
【问题描述】:

SQL 新手,如果这是一个愚蠢的问题,请原谅我......

我正在尝试计算相对于表中每个行的时间戳在特定范围内的行数。

即
对于 TableA 中的每一行 R,计算 (Timestamp) 的行数

Row     Timestamp   Foo     Bar
        (H:MM)
1       1:00        0       1
2       1:15        1       1
3       1:30        0       1
4       1:31        1       1
5       1:32        0       1
6       2:32        1       1
7       2:50        0       1
8       3:00        1       1

Row     <Query Output>
1       3
2       2
3       2
4       1
5       1
6       1
7       1
8       0

有没有办法编写查询来执行此操作?相对于常数值执行此操作很简单,但相对于给定列中的每个值执行此操作则不然。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    您可以在同一张桌子上使用Outer Apply。

    Select  A.Row, Coalesce(B.Total, 0) 
    From    TableA A
    Outer Apply
    (
        Select  Count(*) Total
        From    TableA R
        Where   R.TimeStamp Between A.Timestamp And DateAdd(Hour, 1, A.TimeStamp)
        And     R.Foo < R.Bar
    ) B
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2020-12-05
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多