sql - 如何在microsoft sql中根据日期返回一行
问题描述
我有一个内部部门,将来会转换帐号。我正在尝试构建一个存储过程,以根据生效日期仅返回两行之一。
这是数据构成
|ID | EffectiveDate | AccountNum |
|-- | ------------- | ---------- |
| 1 | 2021-01-01 | 350000 |
| 2 | 2021-09-01 | 950000 |
我知道这会返回所有数据
SELECT Id, EffectiveDate, AccountNum
FROM Account
这仅返回第一行,从不返回第二行:
SELECT Id, EffectiveDate, DeptNum
FROM Account
WHERE EffectiveDate <= GETDATE()
如何根据今天的日期动态返回仅 1 行?
因此,如果生效日期小于今天的日期,则获取第一行。如果生效日期等于或大于今天的日期,则获取第二行。
解决方案
我想出了解决方案。鉴于 EffectiveDate 小于或等于当前日期,仅从两个可能的答案之一中选择前 1 个 deptnum,并且也使用 desc 的顺序。这可确保获得原始 EffectiveDate,因为未来的 EffectiveDate 尚未超过当前日期。当未来日期等于或早于当前日期时,将返回其值。
select TOP 1 deptnum
from Account
where EffectiveDate <= GETDATE()
order by EffectiveDate desc
推荐阅读
- powershell - 包含来自另一个文件的枚举
- github - 每个分支 prod 和 dev 的自托管运行器
- java - 使用属性值中的序列化 JSON 反序列化 JSON
- kubernetes - AKS:ingress-nginx 不断打开到我的 pod 的 tcp 连接
- python - 如何反编译/反混淆 sourcedefender pye 代码
- excel - 有没有办法在不加载整个文件的情况下从 CSV 获取行?
- java - 如何保存与 Springboot 中的变量名称不同的 json 对象名称?
- ruby-on-rails - 由于 current_user (设计 gem),每次我对用户模型(仅)进行更改时,Rails 服务器都需要重新启动
- laravel - Cypress.io on Apple Silicon M1 with Yarn – “Cypress 无法启动。这可能是由于缺少库或依赖项。”
- c - ncurses 窗口函数未按预期工作