sql - 数据转换的最佳方法

标签 sql sql-server-2008-r2 data-mining teradata

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

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

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

观察ID, 位置ID, 观察日期, 温度, 最后观察时的温度, 温度_2_观察_前, 温度_3_观察_前, 温度_4_观察_前, ..等等..

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

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

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

有什么建议吗?

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

最佳答案

坚持基于 SET 的方法。

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

在 Teradata 中,您可以将 Window Aggregate 函数与 ROW BETWEEN n PRECEDING 和 n PRECEDING 结合使用来回顾“n”行。

有关 Teradata 中的示例,请查看对问题 Compare 3 Consecutive Rows in a table 的响应.

关于sql - 数据转换的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173345/

相关文章:

SQL - PostgreSQL 错误

java - 检查 MySQL RDMS 上是否存在表

sql - 在 SQL 中选择最近的条目

data-mining - 如何预测函数名称是否遵循约定

sql - 为什么这个sql查询要进行键查找?

MySQL 预定义值

sql - 如果 SQL 中存在语句超时

F# OleDb INSERT INTO 语句从访问中提取数据到链接 SQL Server 时出现语法错误

vector - 相似距离度量

java - 如何判断一个句子是否是疑问句(疑问句)?