sap iq—在没有键或索引可连接时,在sql中构建一个交叉表

qyuhtwio  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(329)

我得到了一个产品名称列表(每个季度50-100个名称),我需要构建一个从这些广泛的产品名称到存储在我们产品表中的更具体的名称的交叉表。
以下是我收到的两个产品的示例:

Table A:
FLOVENT
ASMANEX

我上面的产品名被写入了一个temp表(表a),并且没有键或索引来执行与product表的联接,product表包含了我希望从db中提取的所有产品的变体。
当我使用以下查询查看产品表(表b)时:

SELECT *
FROM
PROD_TABLE AS B
WHERE B.BRAND_NM LIKE '%FLOVENT%' OR B.BRAND_NM LIKE '%ASMANEX%'

我得到以下变体:

ASMANEX HFA                   
ASMANEX TWISTHALER 120 METERED
ASMANEX TWISTHALER 30 METERED 
ASMANEX TWISTHALER 60 METERED
FLOVENT DISKUS                
FLOVENT HFA

我希望避免使用case语句,因为我在表a中列出的产品可能有50-100个长度,并且每个季度都会更新,因此我不喜欢使用case语句。
我如何构建一个交叉表,它接受表a中的原始sql查询输入,并显示从prod\u表(表b)中分离出来的详细产品,这是可能的吗?
我的table看起来像这样:

ORIGINAL_VALUE MATCHED_VALUES
FLOVENT        FLOVENT DISKUS
FLOVENT        FLOVENT HFA
ASMANEX        ASMANEX HFA
ASMANEX        ASMANEX TWISTHALER 120 METERED
ASMANEX        TWISTHALER 30 METERED 
ASMANEX        TWISTHALER 60 METERED

我想我要实现的是一个模糊匹配连接,如果这在sql中是可能的话。

irlmq6kh

irlmq6kh1#

可以按如下方式使用具有固定值的联接:

SELECT D.PRODUCT as match, 
       P.*
FROM PROD_TABLE P 
JOIN (SELECT 'FLOVENT' PRODUCT FROM DUMMY
      UNION
      SELECT 'ASMANEX' PRODUCT FROM DUMMY) D 
ON P.BRAND_NM LIKE '%' + D.PRODUCT + '%'
yh2wf1be

yh2wf1be2#

这是你想要的吗?

SELECT (CASE WHEN P.BRAND_NM LIKE '%FLOVENT%' THEN 'FLOVENT'
             WHEN P.BRAND_NM LIKE '%ASMANEX%' THEN 'ASMANEX'
        END) as match, 
       P.*
FROM PROD_TABLE P
WHERE P.BRAND_NM LIKE '%FLOVENT%' OR P.BRAND_NM LIKE '%ASMANEX%';

相关问题