Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 联接后,表中的两行在另一个表中显示为两个不同的列_Sql_Oracle_Join_Oracle Sqldeveloper - Fatal编程技术网

Sql 联接后,表中的两行在另一个表中显示为两个不同的列

Sql 联接后,表中的两行在另一个表中显示为两个不同的列,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

我有这样的桌子:

表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  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'