我正在处理客户的银行交易数据,我希望排除包含部分或全部客户名称的交易。 我的数据如下:
Table A:
Cust_ID |TxnDescription |
----------- |-------------------------------------|
C123------- |#######LIANDRI CORPORATION###########|
C123------- |#########LIANDRI#####################|
C123------- |############JEFF L###################|
C123------- |#########K.S. LI ANDRI###############|
C123------- |############XAN KRIEGOR##############|
C123------- |####AXON RESEARCH CORPORATION########|
C123------- |############FENTECH INCORPORATED#####|
C123------- |########PHAYDER CORPORATION##########|
C123------- |############IZANAGI CORPORATION######|
Table B:
Cust_ID |PromoterName |
--------------|-------------------------------------|
C123 |LIANDRI CORPORATION |
C123 |JEFF LIANDRI |
C123 |K S LIANDRI |
C123 |XAN KRIEGOR |
C324 |IZANAGI CORPORATION |
我想要的输出是:
TABLE: E
Cust_ID |TxnDescription |Fl_Exclude |
----------- |-------------------------------------|------------|
C123------- |#######LIANDRI CORPORATION###########|YES |
C123------- |#########LIANDRI#####################|YES |
C123------- |############JEFF LI ANDRI############|YES |
C123------- |#########K.S. LI ANDRI###############|YES |
C123------- |############XAN KRIEGOR##############|YES |
C123------- |####AXON RESEARCH CORPORATION########|NO |
C123------- |############FENTECH INCORPORATED#####|NO |
C123------- |########PHAYDER CORPORATION##########|NO |
C123------- |############IZANAGI CORPORATION######|NO |
我的方法是将表B中的启动子名称分解为单词,如下所示:
TABLE: C
Cust_ID |PromoterNamePart |
--------------|-------------------------------------|
C123 |LIANDRI |
C123 |CORPORATION |
C123 |JEFF |
C123 |LIANDRI |
C123 |K S |
C123 |LIANDRI |
C123 |XAN |
C123 |KRIEGOR |
然后删除重复项以处理歧义
TABLE: D
Cust_ID |PromoterNamePart |
--------------|-------------------------------------|
C123 |LIANDRI |
C123 |JEFF |
C123 |K S |
C123 |XAN |
C123 |KRIEGOR |
使用 D.PromoterNamePart <加入 Cust_ID 上的 A 和 D 以及喜欢子句/ strong>在 A.TxnDescription 上,我希望得到我的输出。
现在,我坚持将表B分成C,因为单个字母的连续缩写将被视为一个单词。
任何关于如何处理此问题或任何替代解决方案的想法都将深表感谢。感谢。
答案 0 :(得分:0)
对于在c中破坏表b,你需要一些东西进行拆分..这在本机mysql函数中不存在。但是你可以以两种方式构建你的(溢出)函数(至少)
然后你有了表C
可以像
一样使用select distinct
a.Cust_id
, a.PromoterNamePart
, case when a.PromoterNamePart like concat('%',d.PromoterNamePart, '%')
Then 'YES'
ELSE 'NO'
END as Fl_Exclude
from tableA as a
left join tableD as d