sql-server - 查找最近日期 SQL 的记录
问题描述
我有一个dbo.X
包含DateTime
列的表lastUpdated
和一个可能有数百条记录的代码产品列CodeProd
,其中 CodeProd 重复,因为该表用作“股票历史”
我的存储过程有参数@Date
,我想获取CodeProd
最接近该日期的所有内容,例如,如果我有:
+----------+--------------+--------+
| CODEPROD | lastUpdated | STATUS |
+----------+--------------+--------+
| 10 | 2-1-2019 | C1 |
| 10 | 1-1-2019 | C2 |
| 10 | 31-12-2019 | C1 |
| 11 | 31-12-2018 | C1 |
| 11 | 30-12-2018 | C1 |
| 12 | 30-8-2018 | C3 |
+----------+--------------+--------+
和@Date
= '1-1-2019'
我想要:
+----+--------------+------+
| 10 | 1-1-2019 | C2 |
| 11 | 31-12-2018 | C1 |
| 12 | 30-8-2018 | C3 |
+----+--------------+------+
如何找到它?
解决方案
您可以使用TOP(1) WITH TIES
为每行获取最近日期的一行,CODEPROD
该日期应小于提供的日期。
试试下面的代码。
SELECT TOP(1) WITH TIES *
FROM [YourTableName]
WHERE lastupdated <= @date
ORDER BY Row_number()
OVER (
partition BY [CODEPROD]
ORDER BY lastupdated DESC);
推荐阅读
- flutter - 扑动 webview 中的 Payrexx 集成
- ios - 在后台接收 HealthKit 更新并更新服务器,无需用户打开应用程序
- swift - CoreData 错误:“NSInternalInconsistencyException”,原因:无法为具有未定义类型的属性设置值:属性 ... 用于可选 UUID
- json - LocalDateTime 值在序列化时消失
- visual-studio - ASP.NET CORE WEB API 调试问题
- android - 在 Jenkins 中成功构建后将 Git 提交消息发送到松弛通道
- r - 有没有办法使用 if-else 语句来查找 df 中具有最小值的列?
- symfony - symfony5 翻译:更新结果不如预期
- python - 如何使用数据透视表创建用户和项目之间的交互矩阵
- python - 字典更新序列元素#0的长度为1;2 是必需的错误 | Python