SQL新手,请原谅我,如果这是一个愚蠢的问题......
我尝试计算相对于表格中每个行的某个范围内的时间戳的行数。
即。
对于TableA中的每一行R,计算其中的行数(Timestamp)< (R.Timestamp + 1Hour)和(Foo< Bar)
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
有没有办法编写查询来执行此操作?相对于常量值执行此操作是足够直接的,但相对于给定列中的每个值执行它不会。
答案 0 :(得分: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