2

为了简单,我正在简化现实......

我有一张包含数百万个温度观测值的表:ObservationID、LocationID、Observation_Date、Temperature

我想写一个查询,但还要派生其他列,

ObservationID, LocationID, Observation_Date, Temperature, Temperature_At_Last_Observation, Temperature_2_observations_ago, Temperature_3_observations_ago, Temperature_4_observations_ago, ..etc..

实际上,这要复杂得多,而且我的表中确实有数百万行。所以我想知道哪种方法最有效

我是否从递归的角度来攻击这个?或者因为我每行至少有 15 个新列,这是否意味着递归效率低下?

还是我坚持使用基于集合的方法,将观察结果划分为排序顺序,然后加入 LocationID?

有什么建议么?

幸运的是,我还可以选择将数据加载到 Teradata 平台或 SQL Server 2008R2 平台。

4

1 回答 1

2

坚持使用基于 SET 的方法。

在 SQL Server 中,请考虑将 LEAD() 和 LAG() 与 Window Aggregate 函数一起使用。

在 Teradata 中,您可以使用结合 ROW BETWEEN n PRECEDING 和 n PRECEDING 的窗口聚合函数来回溯“n”行。

有关 Teradata 中的示例,请查看对“比较表中的 3 个连续行”问题的响应。

于 2013-04-23T19:58:02.677 回答