【发布时间】:2011-03-30 16:35:43
【问题描述】:
我有输入表的 Ticker、Dt、[Open]、Volume
Dt is yyyy-mm-dd
我想返回 ticker = 'IBM' 的每一行,还返回 Ticker、Dt、[Open]、Volume 字段,然后包含一个仅表示前 x 天的 max 列。为了不发布太多数据,假设 3 天。
但我不知道如何使时间范围正确,以便最大值只包含在这么多天之前。
在表中:
Tck Dt [Open] Volume
IBM 2010-05-21 122.160000 6881000
IBM 2010-05-24 125.260000 6876000
IBM 2010-05-25 121.470000 9498800
IBM 2010-05-26 124.890000 9085900
IBM 2010-05-27 125.050000 7726500
我需要什么:
Tck Dt [Open] Volume Max
IBM 2010-05-21 122.160000 6881000 122.160000
IBM 2010-05-24 125.260000 6876000 125.260000
IBM 2010-05-25 121.470000 9498800 125.260000
IBM 2010-05-26 124.890000 9085900 125.260000
IBM 2010-05-27 125.050000 7726500 125.050000
这是我当前的 SQL,但显然没有正确分组 Max 值。
Select Ticker,
Dt,
[Open],
Volume,
(Select Max([Open]) from Daily_NYSE
where Ticker = 'IBM'
and Dt between DateAdd(Day,-3,'2010-05-27') and '2010-05-27') as 'Max'
from Daily_NYSE
where Ticker = 'IBM'
and Dt between DateAdd(Day,-6,'2010-05-27') and '2010-05-27'
谢谢! 亚当
【问题讨论】:
-
对于什么 RDBMS?看起来 SQL Servery 但什么版本?还有 3 个交易日还是 3 个日历日?
-
MS SQL Server 2008R2。 3 个日历日。
-
我想我错了,我在寻找市场日,而不是日历日 :>)
标签: sql sql-server tsql sql-server-2008-r2