sql - SQL:将一个表中的多个值与另一个表中的单个值进行比较
问题描述
我有两个表表 1 和表 2
表格1:
-------------------------------
| Ser | StartDate | Activity |
-------------------------------
| 1 | 2002-10-13 | 1 |
| 1 | 2002-10-13 | 2 |
| 1 | 2007-09-04 | 3 |
表 2:
------------------------
|Ser|DateOfRegistration|
------------------------
| 1 | 2002-10-12 |
| 1 | 2007-09-02 |
现在,我想要的结果是,对于活动 1 和 2,注册日期应该在开始日期之前,并且日期之间的差异必须最小。同样,对于活动 3,活动 3 的注册日期应早于开始日期。结果应该是这样的。
表3:
--------------------------------------------
|Ser|StartDate |DateofRegistration|Activity|
--------------------------------------------
| 1 |2002-10-13| 2002-10-12 | 1 |
| 1 |2002-10-13| 2002-10-12 | 2 |
| 1 |2002-09-04| 2002-09-02 | 3 |
如何加入表 1 和表 2 以获得表 3?
解决方案
您可以使用outer apply
:
select t1.*, t2.dateofregistration
from table1 t1 outer apply
(select top (1) t2.*
from table2 t2
where t2.ser = t1.ser and t2.dateofregistration < t1.startdate
order by t2.dateofregistration desc
) t2
推荐阅读
- r - 连接两个字符串,删除重复项
- python - 如何将交互式opencv窗口集成到pyqt5小部件中
- llvm - llvm GEP 第一种类型的目的是什么
- spring - Spring Data JPA - 让实体跟踪有多少实体引用他
- postsharp - PostSharp:调用基本方法时如何防止双面调用?
- c++ - 我在这部分代码中遇到了这个错误,它有一个递归函数
- python - 如何有效地向从复杂字典创建的 Pandas DataFrame 添加维度
- android - 如何使用 Appium 滚动 Robot Framework 以在 Android 设备上测试应用程序
- javascript - 自定义油门单元测试
- angular - 如何设置离子内容滚动的开始 y 位置?