有人能帮助我使用这样的条件使SQL (ORACLE)查询更加灵活吗?
有2张表格:
表1
CodeA Year
1112-999 2017
1113-999 2017表2
CodeB Year
1114-111 2017
1115-111 2018然后运行这个脚本
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');在这种情况下,结果是:
CodeA CodeB
1112-999 1114-111但是在这种情况下,它只需要显示第一个值,而另一个列在运行脚本后应该是空的。
例如,
CodeA CodeB
1112-999 NULL但是,如果列"CodeB“(表2)包含值= 1112-534,那么在运行相同的脚本后,应该会出现该值。
例如,
表1
CodeA Year
1112-999 2017
1113-999 2017表2
CodeB Year
1114-111 2017
1112-534 2017
1115-111 2018运行相同的脚本后,结果应该是:
CodeA CodeB
1112-999 1112-534根据表中的输入数据,我应该修改这个脚本以使它变得灵活(通用)?我的意思是,当表2不包含期望值(在本例中为1112-534)时,结果(对于第2列)应该为NULL:
CodeA CodeB
1112-999 NULL当表2包含这个值(1112-534)时,响应应该是:
CodeA CodeB
1112-999 1112-534下面是我的脚本,希望使它更加灵活:
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');(请帮我))预先谢谢。
发布于 2017-08-12 15:39:32
您可能会发现在筛选之前查看联接结果是有帮助的:
SELECT aa.CodeA, bb.CodeB FROM Table1 aa
JOIN Table2 bb ON aa.Year = bb.Year;您的英语语言规范不太清楚,但它建议您要进行空筛选:
SELECT aa.CodeA, bb.CodeB FROM Table1 aa
JOIN Table2 bb ON aa.Year = bb.Year
WHERE REGEXP_LIKE(aa.CodeA, '^1+2')
and bb.CodeB is not null;另见(SQL)
https://stackoverflow.com/questions/45651874
复制相似问题