sql - 如何获取使用 SQL Server 更改的先前数据
问题描述
我需要获取与当前符号不相似的先前符号。
示例:如果表 A 保存历史数据,那么如何实现具有不同先前符号的表 B?
解决方案
一种方法使用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
或另一列指定稳定的顺序(没有关系)。
推荐阅读
- rtos - 在Vxworks上读取磁盘上的文件是实时操作吗?
- javascript - 使用 jQuery 读取/写入本地 json 文件(不涉及服务器)
- python - 在python脚本中排序文件夹名称的pythonic方法是什么
- android - Flutter android 库和 iOS 框架
- java - 最佳实践 - 2 具有相同功能的方法 - 一个抛出异常,另一个抑制
- ubuntu - 如何跨子目录包含所有 .so 库
- jasper-reports - 设置字体不影响输出 excel 文件中单元格的外观
- list - 迭代实现接口的类列表的设计模式
- reactjs - EC2 与本地快递服务器反应
- javascript - chart.js 按顺序显示时间