列值可能来自 3 个表中的 1 个(未规范化)

Column value could come from 1 of 3 tables (not normalized)

我需要一个查询来填充报告。大多数数据将主要来自一个 table(payment_history),但其中一列(收款人姓名)将来自三个 table 之一(它们是 几乎 相同,第三个table 有更多的列并且键列的名称不同)。我唯一尝试过的是 left outer join 但所做的只是添加更多列。我需要一列由三个不同的 tables

填充

示例(在此示例中,值在 bank_payees table:

select payment_history.Date, payment_history.Amount, payees_table_query.PayeeName, payees_table_query.PayeeId
from payment_history

Table payment_history

日期 金额 收款人实例
1/20/2019 150.21 1ef55
2020 年 4 月 1 日 1175.00 A0z1l

Tableuser_payee_instance

收款人实例 收款人编号
1ef55 1234
A0z1l 00a14468

Table 用户收款人

收款人编号 收款人姓名

Tablebank_payees

收款人编号 收款人姓名
1234 沃尔玛

Tableglobal_payees

InternalPayeeId 收款人姓名 行业代码 客户编号
00a14468 大通银行 9933 1000111

结果

日期 数量 收款人姓名 收款人编号
1/20/2019 150.21 沃尔玛 1234
2020 年 4 月 1 日 1175.00 大通银行 00a14468

如果您 UNION ALL 三个收款人 table,您可以将它们视为一个 table (它们可能应该放在第一位).

那么它只是将 table 连接在一起。

SELECT
  *
FROM
  payment_history
LEFT JOIN
  user_payee_instance
    ON user_payee_instance.PayeeInstance = payment_history.PayeeInstance
LEFT JOIN
(
  SELECT PayeeId, PayeeName FROM userpayees
  UNION ALL
  SELECT PayeeId, PayeeName FROM bank_payees
  UNION ALL
  SELECT InternalPayeeId, PayeeName FROM global_payees
)
  AS payees
    ON payees.PayeeId = user_payee_instance.PayeeId