首页 > 解决方案 > 如何获取使用 SQL Server 更改的先前数据

问题描述

我需要获取与当前符号不相似的先前符号。

示例:如果表 A 保存历史数据,那么如何实现具有不同先前符号的表 B?

在此处输入图像描述

标签: sqlsql-server

解决方案


一种方法使用outer apply

select t.*, t2.symbol as prev_symbol
from t outer apply
     (select top (1) t2.*
      from t t2
      where t2.type = t.type and t2.symbol <> t.symbol and t2.date < date
      order by t2.date desc
     ) t2;

请注意,您的特定示例与给定符号的前一个日期有联系。SQL 表表示无序集,因此无法在同一天的两个符号之间进行选择。

您需要一种解决歧义的方法——时间分量date或另一列指定稳定的顺序(没有关系)。


推荐阅读