-2

我有一个看起来像的表:

date         name     lookback_date
1995-01-31   T1       1994-10-24
1995-01-30   T1       1994-10-23
1995-01-29   T1       1994-10-22
1995-01-31   T2       1994-10-24
1995-01-30   T2       1994-10-23
1995-01-29   T2       1994-10-22
1995-01-31   T3       1994-10-24
1995-01-30   T3       1994-10-23
1995-01-29   T3       1994-10-22

等等

我需要计算每条记录的日期和lookback_date之间的名称计数

编辑:我需要一个看起来像这样的结果:

 date         name     lookback_date  cnt
1995-01-31   T1       1994-10-24     70
1995-01-30   T1       1994-10-23     69
1995-01-29   T1       1994-10-22     67
1995-01-31   T2       1994-10-24     73
1995-01-30   T2       1994-10-23     65
1995-01-29   T2       1994-10-22     63
1995-01-31   T3       1994-10-24     68
1995-01-30   T3       1994-10-23     66
1995-01-29   T3       1994-10-22     65

输入日期与此语句一起获取

select date, ticker_name
        ,dateadd(days, -100, date) as lookback_date
from table1
4

1 回答 1

0

试试这个(我没试过)

SELECT t1.date, t1.ticker_name, dateadd(days, -100, date) AS lookback_date,
    (SELECT count(ticker_name) AS cnt
     FROM table1
     WHERE date > t1.date
           AND date < dateadd(days, -100, date))
FROM table1 t1

它在应该执行此操作的 SELECT 子句中使用子选择,但需要优化。

基本上,您想使用两个相互引用的选择,一个用于日期范围选择,一个用于计数。然后在 FROM 子句或 SELECT 子句中加入它们。

FROM 子句会更好,因为它更易读,因此更易于维护。

于 2014-05-19T13:05:37.557 回答