sql - 显示继续日期 -SQL
问题描述
我怎样才能让所有拥有代码(14 ,13)的人整整一个月
IDNR 代码 开始日期 结束日期 16 13 2021-01-07 2021-01-21 16 13 2021-01-22 2021-01-31 17 13 2021-01-01 2021-01-01 17 12 2021-01-02 2021-01-14 17 14 2021-01-15 2021-01-31 18 14 2021-01-01 2021-01-19 18 13 2021-01-20 2021-01-29 18 14 2021-01-30 2021-01-31
我想要的结果是:
IDNR 代码 开始日期 结束日期 16 13 2021-01-07 2021-01-21 16 13 2021-01-22 2021-01-31 18 14 2021-01-01 2021-01-19 18 13 2021-01-20 2021-01-29 18 14 2021-01-30 2021-01-31
我选择( idnr=16 , idnr=18 )作为结果,因为我想要的 CODE 13、CODE 14 以及开始日期和结束日期涵盖了整个 1 月(整个月 2021-01-01 到 2021-01-31)* *抱歉重复我的问题,但我昨天删除了它,因为它不太好**
解决方案
您可以使用not exists
:
select t.*
from t
where t.end_date >= '2021-01-01' and
t.start_date < '2021-02-01'
not exists (select 1
from t t2
where t2.idnr = t.idnr and
t2.code not in (13, 14) and
t2.end_date >= '2021-01-01' and
t2.start_date < '2021-02-01'
)
推荐阅读
- python - 更新使用中间件(last_activity 字段)扩展默认用户的配置文件模型 DRF
- java - 在 Eclipse 中选择 run as 'maven build...' 之前是否需要始终选择'update project'?
- swift - 长按通话按钮后如何添加应用程序
- javascript - Canavs 并没有画出所有的点。只有一个出现
- java - 防止用户输入多个答案
- javascript - 导出配置时将 eslint 配置从 json 转换为 JavaScript 会引发错误
- r - 向字符串添加破折号
- typescript - 反应本机中的Typescript forwardRef错误
- firebase - 带参数的 Firebase 动态链接
- reactjs - 在 material-ui DatePicker 上显示标题