1
有人可以帮助我使用这些条件使SQL(ORACLE)查询更灵活吗?如何仅使用JOIN显示匹配的项目
有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');
请帮我)))提前致谢。
请粘贴来自SQL * plus的纯文本,而不是粘贴在stackoverflow上的HTML。简单的'DESCRIBE table'输出将比您发布的
回答
您可能会发现它的帮助,查看过滤前加入的结果:
你的英语语言规范不是很清楚,但会暗示你想要NULL过滤:
另请参阅https://en.wikipedia.org/wiki/Join_(SQL)
来源
2017-08-12 15:39:32
刚编辑它。对不起,这么丑陋的描述。我的第一个问题使用表格。我认为这张表会自动编辑。我也更新了描述。你能否再次审查一下。我试图更清楚地表达我的想法))) – Vladimir
请查看已记录的JOIN变体,特别是https://en.wikipedia.org/wiki/Join_(SQL)#Outer_join左外连接,然后查看您的JOIN没有WHERE子句的正则表达式过滤。发布看起来有希望的任何JOIN结果。首先,您需要确定适当的JOIN关系,然后才能将其过滤到相关的行。 –
谢谢。我认为左外连接将解决我的问题。 – Vladimir
相关问题