You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL查询关联alpha_country表转换商户国家编码?

修改SQL查询:将商户国家数字编码替换为2位字母编码

原SQL查询返回的merchant_country是3位数字编码,需要关联alpha_country表,将其替换为对应的2位字母国家编码。

原查询语句

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');

修改后的查询语句

推荐使用显式JOIN语法(比旧的逗号连接更清晰),同时关联alpha_country表:

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,
       -- 替换为2位字母编码,保留原字段别名
       ac.ALPHA_COUNTRY_CODE AS "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
JOIN opr_participant op ON op.oper_id = opt.id
JOIN opr_card oc ON oc.oper_id = opt.id
JOIN vis_fin_message vf ON opt.id = vf.id
-- 关联alpha_country表,匹配3位数字编码
JOIN alpha_country ac ON opt.merchant_country = ac.CODE
WHERE 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 opt.msg_type IN ('MSGTPAMC', 'MSGTPACC');

可选调整:保留无匹配的记录

如果希望即使alpha_country表中没有对应编码,也保留原交易记录(此时MERCHANT_COUNTRY会显示为NULL),可以把JOIN alpha_country ac改成LEFT JOIN alpha_country ac。

内容的提问来源于stack exchange,提问作者headspace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:33:32