sql - 在 SQL Server 中获取上一年的记录
问题描述
我需要获取上一年的记录和当年的记录
输入
id year amount
----------------------
1001 2012 3747
1001 2012 3747
1002 2013 5746
1002 2013 5746
1003 2014 6756
1003 2014 6756
1004 2015 8746
期望输出:
id year amount prevAmount
----------------------------------
1001 2012 3747 null
1001 2012 3747 null
1002 2013 5746 3747
1002 2013 5746 3747
1003 2014 6756 5746
1003 2014 6756 5746
1004 2015 8746 6756
解决方案
如果我理解正确,您可以使用apply
:
select t.*, tprev.amount
from t outer apply
(select top (1) tprev.*
from t tprev
where tprev.year = t.year - 1
);
通常,会有一个order by
with select top
,但它似乎对您的数据没有影响。
推荐阅读
- ssis - 如何从本地执行 SSIS 包,但 (.csv, .xls ...) 等文件在 VM 上
- android - Ionic Cordova Android:输入调度超时错误
- shell - 如何使用新的 buildpacks.io 框架部署 heroku nginx buildpack?
- visual-studio-code - 找到了一些VSCode:如何确定光标在编辑器中的列位置?
- javascript - 无法使用 nodeJs 从 Mysql 中删除行
- asp.net-core - 在 ASP.NET Core webapi 中,如何在使用 NSwag.AspNetCore 时向 swaggerUI 添加示例请求?
- python - 删除 .txt 文件中“(”之后的文本
- laravel - CRUD Laravel Update in database one to many relationship
- python - 条件列表 Python
- java - 在有向循环图中找到最常见的路径