gpt4 book ai didi

mysql - 连接两个具有日期范围的表

转载 作者:行者123 更新时间:2023-11-29 04:35:39 25 4
gpt4 key购买 nike

我有两个包含开始日期和结束日期的 SQL 表。

 Table 1: Name, AddedDate
Table 2: Name, RemovedDate

我希望连接这两个表并将数据转储到一个临时表中,以显示何时从列表中添加和删除名称。

The same name may have been added and removed multiple times.

期望的输出示例

- Name, AddedDate, RemovedDate
- Jane, 2017-02-01, 2017-02-03
- Bill, 2017-01-28, (blank)
- Mike, 2017-01-15, 2017-01-19
- Jane, 2017-01-13, 2017-01-14

有人可以帮忙吗?谢谢。

最佳答案

另一个选项是OUTER APPLY(如果是 SQL Server)

示例

Declare @Table1 table (Name varchar(25),AddedDate date)
Insert Into @Table1 Values
('Jane', '2017-02-01'),
('Bill', '2017-01-28'),
('Mike', '2017-01-15'),
('Jane', '2017-01-13')

Declare @Table2 table (Name varchar(25),RemovedDate date)
Insert Into @Table2 Values
('Jane', '2017-02-03'),
('Mike', '2017-01-19'),
('Jane', '2017-01-14')


Select A.Name
,A.AddedDate
,B.RemovedDate
From @Table1 A
Outer Apply (
Select RemovedDate=min(RemovedDate)
From @Table2
Where Name=A.Name
and RemovedDate>=A.AddedDate
) B

返回

Name    AddedDate   RemovedDate
Jane 2017-02-01 2017-02-03
Bill 2017-01-28 NULL
Mike 2017-01-15 2017-01-19
Jane 2017-01-13 2017-01-14

关于mysql - 连接两个具有日期范围的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com