gpt4 book ai didi

sql - 根据年份是否(完全)包含在日期范围内进行匹配

转载 作者:行者123 更新时间:2023-12-02 02:37:12 28 4
gpt4 key购买 nike

我正在尝试根据日期范围连接两个表。

表A格式为:

ID   CAT    DATE_START    DATE_END
1 10 2018-01-01 2020-12-31
2 15 2018-06-01 2018-07-01

表B格式为:

ID    YEAR       VALUE
1 2017 100
1 2018 110
1 2019 90
1 2020 30
2 2018 200

如果对于给定 ID,B.YEAR 中的任何日期都包含在从 A.DATE_START 到 A.DATE_END 的日期范围内,则应合并结果表,结果表应如下所示:

ID    YEAR    CAT    VALUE
1 2018 10 110
1 2019 10 90
1 2020 10 30
2 2018 15 200

我尝试使用 extract(year from DATE_START)extract(year from DATE_START) 进行合并,但我无法在时间间隔中包含 2019 年中,这导致意味着 ID = 1 缺少 2019 年的值。

我还尝试使用 to_date(YEAR), 'YYYY') 进行合并,但 YEAR = '2018' 的生成日期是 '1.9.2018',它不在区间内ID = 2。非常感谢您的帮助。

最佳答案

像这样连接表:

select a.ID, b.YEAR, a.CAT, b.VALUE 
from TableA a inner join TableB b
on b.ID = a.ID
and b.year between extract(year from a.DATE_START) and extract(year from a.DATE_END)

请参阅demo .
结果:

> ID | YEAR | CAT | VALUE
> -: | ---: | --: | ----:
> 1 | 2018 | 10 | 110
> 1 | 2019 | 10 | 90
> 1 | 2020 | 10 | 30
> 2 | 2018 | 15 | 200

关于sql - 根据年份是否(完全)包含在日期范围内进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64139885/

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