sql - sql oracle - LIKE 与 LEFT JOIN
问题描述
我有两个表,在表 A 中,我有numbS
可以复制的列,每个numbS
都有一个startYear
and endYear
,我想code
从表 B 中获取列,其中列startYear
和列与endYear
列相同year
,并且numSFK
等于numS
表B
idS numS year code
10 1 2017/2018 123
20 2 2016/2017 456
30 1 2016/2017 789
40 2 2017/2018 159
表A
idP startYear endYear numSFK
x 2017 2018 2
w 2016 2017 1
z 2017 2018 1
结果
numS code
2 159
1 789
1 123
我尝试使用以下查询,但总是将列代码为空
select
mp.numSFK,
sm.code
from tableA mp
LEFT JOIN TableB sm ON sm.numS = mp.numSFK AND
mp.startYear LIKE '%' || sm.year || '%' AND mp.endYear LIKE '%' || sm.year || '%'
解决方案
您应该将tableA
startYear
和endYear
值连接在一起以与tableB
year
列进行比较:
SELECT A.numSFK AS numS,
B.code
FROM TableA A
LEFT JOIN TableB B ON B.numS = A.numSFK
AND B.year = A.startYear || '/' || A.endYear
ORDER BY numS DESC, code DESC
输出:
NUMS CODE
2 159
1 789
1 123
推荐阅读
- docker - 通过在 swarm 模式下创建 docker 服务来设置 docker swap
- java - Linux 中的 Java 写入文件
- reactjs - 将 create-react-app 与本地模板一起使用?
- python - pyplot图例中的左右对齐
- r - R检查开发包很慢
- c# - 在 ASP.NET MVC 5 Stackoverflow 上更新 Kendo
- javascript - Firebase 数据库正在拒绝请求
- java - 如何在 Spring Boot 应用程序中测试 DatadogMeterRegistry?
- c# - XSD exe 多个类同名分隔
- vue.js - 在 Vuex 中使用 NuxtJS Strapi 模块