【问题标题】:Two rows from a table show as two different columns in another table after join连接后,表中的两行在另一个表中显示为两个不同的列
【发布时间】:2020-04-29 22:18:12
【问题描述】:

我有如下表格:

表 A

tableA_key  BillToCustId SoldToCustId 
123         C1           C2    

餐桌定制

ID Name Type
C1 ABC  Bill To
C2 XYZ  Sold To

当我将 Cust 表与表 A 连接并在查询中添加列时,我希望解决方案如下所示:

表 A

tableA_key  BillToCustId BillToName SoldToCustId SoldToName 
123         C1            ABC        C2           XYZ     

我得到了什么:

tableA_key  BillToCustId BillToName SoldToCustId SoldToName 
123         C1            (null)        C2           (null)

问题是 Cust 表中的两行如何成为表 A 中的列?

【问题讨论】:

    标签: sql oracle join oracle-sqldeveloper


    【解决方案1】:

    您可以加入两次:

    select 
        a.tablea_key,
        a.billToCustId,
        c1.name billToName,
        a.soldToCustId,
        c2.name soldToName
    from tablea a
    inner join cust c1 on c1.id = a.billToCustId
    inner join cust c2 on c2.id = a.soldToCustId
    

    您可能还需要cust(type) 的加入条件,例如:

    select 
        a.tablea_key,
        a.billToCustId,
        c1.name billToName,
        a.soldToCustId,
        c2.name soldToName
    from tablea a
    inner join cust c1 on c1.id = a.billToCustId and c1.type = 'Bill To'
    inner join cust c2 on c2.id = a.soldToCustId and c1.type = 'Sold To'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 2023-03-19
      • 2020-05-13
      相关资源
      最近更新 更多