sql - 如何从重复记录中获取最新更新的数据?
问题描述
我有 3 张桌子。Table1 具有 memberhsip id 并加入到具有注册 id 的 Tbl2。Tbl3 有我感兴趣的数据。在一个完美的世界中,一个成员不应该在同一日期期间有 2 个注册 ID;但是,它确实有。我对最近更新的注册 ID 感兴趣。标准之一是生效日期和任期日期。例如,如果我正在寻找从 1/1/2018 到 2/1/2018 的生效日期和期限日期,SQL 将为成员 1 带来 2 条匹配记录。如何从 Tbl3 中获取“上次更新”的最大值。
表1
Member iD
---------
| 1 |
---------
| 1 |
---------
表2
|Member ID | Enrollment ID |
|--------- | ---------------|
| 1 | E1 |
|----------| ---------------|
| 1 | E2 |
|---------------------------|
Tb3
---------------------------------------------|-------------------------|
| Enrollment ID | Effective Date | Term Date | Last Update |
|---------------|----------------|-----------|-------------------------|
| E1 | 1/1/2018 | 2/1/2018 | 2018-01-19 11:20:03.483 |
|---------------|----------------|-----------|-------------------------|
| E2 | 1/1/2018 | 2/1/2018 | 2018-01-19 13:28:20.923 |
|---------------|----------------|-----------|-------------------------|
解决方案
我不确定您的预期输出应该是什么,并且在没有提供数据的情况下我没有对此进行测试 - 但您可以根据需要在选择中编辑以下内容,它应该为您提供最大上次更新日期:
select * from
(
select a.[member id]
, b.[enrollment id]
, c.[effective date]
, c.[term date]
, c.[last update]
, row_number() over (partition by a.[member id] order by c.[last update] desc) row_num
from tbl1 a
join tbl2 b on a.[member id] = b.[member id]
join tbl3 c on b.[enrollment id] = c.[enrollment id]
) x
where row_num = 1
;
推荐阅读
- amazon-web-services - AWS KMS (AmazonKeyManagementServiceClient) .Net Core 未加载 AWS 配置文件 appSettings.json
- angular - 在 Angular 项目中放大 GeoChoroplethChart
- c# - HttpClient GetAsync 冻结
- graph - 在 Janusgraph 中合并 Gremlin 查询
- git - git pre-push hook:在每个新提交上运行测试
- javascript - 将 element.dataset(一个 DOMStringMap 对象)转换为 vanilla JavaScript 中的“真实”JSON 对象?
- objective-c - 仅在 textView 而不是 textField 上移动视图
- javascript - 为什么我不能将变量名传递给 JS 函数?
- python - 使用decimal.Decimal从表达式输出多值?
- php - 更改页面后保持聊天打开