【发布时间】:2023-03-04 07:09:04
【问题描述】:
我想知道如何使用 While 或 Recursion 来创建 AR(1) 模型。 在我的数据库中,我在一个表中有以下变量(Y 是一个值):
| Period | Values |
|---|---|
| 20171 | Y_0 |
| 20172 | Y_1 |
| 20173 | Y_2 |
| 20174 | Y_3 |
| 20181 | Y_4 |
我正在尝试创建一个查询,该查询将创建一个新列 AR,其定义为:
| Period | Value | AR |
|---|---|---|
| 20171 | Y_0 | Y_0 |
| 20172 | Y_1 | AVG( AR_0 & Y_1) |
| 20173 | Y_2 | AVG( AR_1 & Y_2) |
例如: Image of desired dataflow from excel
我尝试了以下方法:
SELECT Period , Values, Values as AR,
INTO #Beginning
FROM table
WHERE Period = (SELECT MIN(PERIOD) FROM table)
SELECT Period , Values, Values as AR,
FROM #Beginning
UNION ALL
SELECT Period , Values, NULL as AR,
FROM table
WHERE Period >(SELECT MIN(PERIOD) FROM table)
这会产生一个表,其中第一行是所需结果。但是,我似乎无法获得 AR 列的其余部分,因为它们相互依赖。到目前为止,这些都是空的。
是否可以在 SQL 中使用递归创建一列,其中每一行依赖于同一行中的一列,以及前一行中的一列?
【问题讨论】:
标签: sql recursion time-series recursive-query autoregressive-models