我有2个表格,如下所示,我想根据“产品”一栏仅列出表2中的表1中的记录
如果每个ID的任何一行匹配,那么它必须包含在输出表中(匹配不必在一个顺序中)例如:PRD-B,PRD-C也可以匹配PRD-C, PRD-B但它必须是一场完整的比赛。
我将无法对我的数据模型进行任何更改
ID | State | Product |
---------------------------------------
1 FL PRD-A
1 GA PRD-B
1 CA PRD-D,PRD-E
2 MN PRD-K
3 OH PRD-B,PRD-C
4 PR PRD-F,PRD-Z
4 MT PRD-Z,PRD-A
| Product |
----------------
PRD-A
PRD-C,PRD-B
PRD-F
PRD-A,PRD-Z
这是必需的输出
ID | State | Product |
-----------------------------------------------
1 FL PRD-A
1 GA PRD-B
1 CA PRD-D,PRD-E
3 OH PRD-B,PRD-C
4 MT PRD-Z,PRD-A
我试图使用联接,但没有找到完整匹配的运气,任何想法或帮助表示赞赏。
select distinct a.ID
from Table_1 a
inner join Table_2 b
on trim(upper(b.Product)) = trim(upper(Product))
这是我的查询的一部分
答案 0 :(得分:0)
with tbl1 as (
select distinct a.id, a.state trim(regexp_substr(trim(upper(b.Product)),'[^,]+', 1, level) ) product
from table_1 a
connect by regexp_substr(trim(upper(a.Product)) , '[^,]+', 1, level) is not null
order by id),
tbl2 as (
select distinct trim(regexp_substr(trim(upper(b.Product)),'[^,]+', 1, level) ) product
from table_2 b
connect by regexp_substr(trim(upper(b.Product)), '[^,]+', 1, level) is not null)
select distinct tbl1.*
from tbl1
inner join tbl2
on tbl1.product = tbl2.product