Sql 联接后,表中的两行在另一个表中显示为两个不同的列
我有这样的桌子: 表ASql 联接后,表中的两行在另一个表中显示为两个不同的列,sql,oracle,join,oracle-sqldeveloper,Sql,Oracle,Join,Oracle Sqldeveloper,我有这样的桌子: 表A tableA_key BillToCustId SoldToCustId 123 C1 C2 tableA_key BillToCustId BillToName SoldToCustId SoldToName 123 C1 ABC C2 XYZ 表Cust ID Name Type C1 ABC Bill To C2 XYZ So
tableA_key BillToCustId SoldToCustId
123 C1 C2
tableA_key BillToCustId BillToName SoldToCustId SoldToName
123 C1 ABC C2 XYZ
表Cust
ID Name Type
C1 ABC Bill To
C2 XYZ Sold To
当我将Cust表与表A连接并在查询中添加列时,我希望解决方案如下所示:
表A
tableA_key BillToCustId SoldToCustId
123 C1 C2
tableA_key BillToCustId BillToName SoldToCustId SoldToName
123 C1 ABC C2 XYZ
我得到的是:
tableA_key BillToCustId BillToName SoldToCustId SoldToName
123 C1 (null) C2 (null)
问题是Cust表中的两行如何成为表A中的列?您可以联接两次:
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'