【发布时间】:2017-08-12 15:24:18
【问题描述】:
有人可以帮助我使用这些条件使 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)包含 value = 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输出将比您发布的更有帮助。
标签: sql oracle join regexp-like