【发布时间】:2020-05-29 14:42:31
【问题描述】:
表A
id dtchk
1001 3/31/2018
1002 9/30/2018
1004 3/31/2019
1003 5/25/2018
1005 9/30/2019
1006 3/31/2020
表B
id type startdate endate name
1001 1 4/5/2018 12/31/2025 akshi
1002 100 4/27/2015 12/31/2023 polard
1004 100 4/1/2017 12/31/2019 kathi
1003 1 1/25/2018 5/25/2019 smoth
1005 1 3/21/2017 12/31/2020 sumi
1005 100 3/26/2019 12/31/2021 chechi
1006 1 2/28/2019 3/31/2021 paul
1006 100 2/28/2017 3/31/2019 rand
首先我们需要根据 id 验证 dtchk 是否在 startdate 和 endate 之间 如果这些日期之间存在日期,那么我们需要检查类型 如果类型 1 和 100 都适合,则选择类型为 100 的行 如果日期适合这些日期,则按原样选择
输出
id name
1002 polard
1004 kathi
1003 smoth
1005 chechi
1006 paul
【问题讨论】:
-
您已经告诉我们您的目标,那么您的问题是什么?当您进行尝试时,什么没有奏效?
-
我厌倦了 cte 与 row_number 函数并左连接,但不太明白。
-
第一个问题是两个表之间的INNER JOIN,检查dtchk是否在区间内,第二个问题是按照你的规则加入第一行,看看在这里:stackoverflow.com/questions/2043259/… 尝试解决它,并告诉我们您尝试了什么以及您遇到的问题。
-
把你的尝试放在问题中,@Quikr。
标签: sql sql-server tsql