多项选择,但我还需要添加另一个联接

问题描述 投票:0回答:1

我有以下查询,它给出了下面的输出,但我还想向其中添加一个额外的部分,将其中一个输出转换为来自不同表的输出。 .

SELECT oc.card_number,
       opt.oper_date AS "TRANSACTION_DATE",
       op.account_number,
       CASE vf.sttl_currency
         WHEN '840' THEN
          'USD'
       END AS "SOURCE_AMOUNT_CURRENCY",
       CASE opt.oper_type
         WHEN 'OPTP0000' THEN
          -vf.sttl_amount
         ELSE
          vf.sttl_amount
       END AS "SOURCE_AMOUNT",
       op.auth_code,
       opt.mcc,
       opt.terminal_number AS "TERMINAL_ID",
       vf.pos_terminal_cap,
       vf.pos_entry_mode,
       opt.oper_type,
       opt.part_key AS "CAPTURE_DATE",
       opt.oper_amount AS "TRANSACTION_AMOUNT",
       opt.oper_currency AS "TRANSACTION_CURRENCY",
       opt.merchant_name,
       opt.merchant_country,
       opt.clearing_sequence_num,
       opt.clearing_sequence_count,
       CASE opt.oper_type
         WHEN 'OPTP0000' THEN
          '05-PURCHASE'
         WHEN 'OPTP0020' THEN
          '06-CREDIT VOUCHER'
         ELSE
          'other'
       END AS Transaction_Type
  FROM opr_operation   opt,
       opr_participant op,
       opr_card        oc,
       vis_fin_message vf
 WHERE op.oper_id = opt.id
   AND opt.id = vf.id
   AND opt.clearing_sequence_num > 1
   AND opt.part_key >= '28-MAR-24'
   AND op.card_id = vf.card_id
   AND op.participant_type = 'PRTYISS'
   AND oc.oper_id = opt.id
   AND opt.msg_type IN ('MSGTPAMC', 'MSGTPACC');

输出:

"CARD_NUMBER"   "TRANSACTION_DATE"  "ACCOUNT_NUMBER"    "SOURCE_AMOUNT_CURRENCY"    "SOURCE_AMOUNT" "AUTH_CODE" "MCC"   "TERMINAL_ID"   "POS_TERMINAL_CAP"  "POS_ENTRY_MODE"    "OPER_TYPE" "CAPTURE_DATE"  "TRANSACTION_AMOUNT"    "TRANSACTION_CURRENCY"  "MERCHANT_NAME" "MERCHANT_COUNTRY"  "CLEARING_SEQUENCE_NUM" "CLEARING_SEQUENCE_COUNT"   "TRANSACTION_TYPE"
"1234567891234567"  26-MAR-24   "004000485011"  "USD"   -2020   "735762"    "5734"  "TERMID01"  "9" "01"    "OPTP0000"  28-MAR-24   2020    "060"   "ACQUIRER NAME            " "060"   2   2   "05-PURCHASE"

但是,我想做的是让 opt.merchant_country 使用另一个名为 alpha_country 的表中的值。 在 alpha_country 表中,“C”-“CODE”列包含与 opt.merchant_country 返回的值匹配的 3 位数字值,“F”列包含 2 位 alpha 值。我想返回查询中的 2 位 alpha 值。因此,在我的示例中,我希望“060”显示为“BM”

这是 alpha_country 中保存的数据:

"ID"    "SEQNUM"    "CODE"  "NAME"  "CURR_CODE" "ALPHA_COUNTRY_CODE"    
1          1        "060"   "BMU"     "060"          "BM"   

我完全陷入困境,正在考虑进行连接,但我认为我现在已经超出了我的能力,所以请提供任何帮助。

sql oracle
1个回答
0
投票

只需加入额外的桌子即可。忽略所有不相关的列,您的查询将是:

SELECT opt.merchant_country,
       a.alpha_country_code
FROM   opr_operation opt
       INNER JOIN opr_participant op
       ON op.oper_id = opt.id
       INNER JOIN opr_card oc
       ON oc.oper_id = opt.id
       INNER JOIN vis_fin_message vf
       ON     opt.id = vf.id
          AND op.card_id = vf.card_id
       INNER JOIN alpha_country a
       ON opt.merchant_country = a.code
WHERE  opt.clearing_sequence_num > 1
AND    opt.part_key >= DATE '2024-03-28'
AND    opt.msg_type IN ('MSGTPAMC', 'MSGTPACC')
AND    op.participant_type = 'PRTYISS';
© www.soinside.com 2019 - 2024. All rights reserved.