我试图生成一个数据集,我认为递归是必需的,但我无法完全适应我发现我的目的的众多例子。我想要的最终结果是相当简单的描述。SQL Server递归cte帮助要
涉及两张表:第一张带有相关字段TradeDate
,Symbol
和Clse
(收盘价)的股票的交易定价,以及一个包含交易日的表格。我想按日期排序定价数据,但如果定价表中缺少交易日期,我希望分区/行编号中断,因为这些数据来自Web服务,它是有时候有点不可预测。
我第一次尝试是有一个WHERE
条款,被称为UDF我写的,看是否有该符号/日期组合连续数据再简单不过的选择查询。它工作(运行)和我跑它的夜晚,7个小时后它几乎通过以'A'开始的符号。
编辑:
这个帖子矿和响应一小会儿就做回SQL server select query help for stored procedure needed是有帮助的概念,但我目前使用的概念都需要多一点(表时,分区/行编号等)
如果它有助于理解问题,我想使用返回的数据计算每个符号的各种聚合,使用过去数据点的交易日期组合。例如:标志/交易日期的收盘价的5个周期移动平均线将是交易日期为< =计算日期的五个收盘价(期货)的平均值。因此,使用下面第一个表格中的样本数据,我想返回9.02代表符号'A',3个期间,交易日期1/3/12。如果某个计算中缺少数据,我希望为null。
这个结果集我想要的是一个简单的PARTITION选择查询,如果它不是为了检查缺失的日期。因此,这里是所涉及的表的一些样本数据和我的目标结果集:
tblDailyPricingAndVol
TradeDate Symbol Clse
1/1/12 A 9.01
1/2/12 A 9.05
1/3/12 A 8.99
1/5/12 A 9.03
1/1/12 B 10.05
1/4/12 B 10.11
1/5/12 B 10.03
tblTradingDays
TradingDate
1/1/12
1/2/12
1/3/12
1/4/12
1/5/12
目标的结果集:
RowNumber TradeDate Symbol Clse
1 1/1/12 A 9.01
2 1/2/12 A 9.05
3 1/3/12 A 8.99
1 1/5/12 A 9.03
1 1/1/12 B 10.05
1 1/4/12 B 10.11
2 1/5/12 B 10.03
希望有道理。任何帮助,将不胜感激。我想我会更清楚地看到递归cte,如果我可以按照预期在我自己的数据上运行递归cte。谢谢。
我不认为递归CTE将有助于在这里。你需要的是'滞后'窗口函数。但SQL Server尚不支持。 – 2012-03-04 13:46:53
@a_horse_with_no_name真的吗?也许我对递归cte有很好的把握,因为我没有看到它在这个应用程序中的工作方式。我没有听说过滞后。也许我需要一个游标和一个更程序代码类型的存储过程。 – StatsViaCsh 2012-03-04 14:30:16
'lag'是一个标准的窗口函数,可让您访问以前行的列值。 – 2012-03-04 14:35:15