Oracle SQL - 显示从表 A 第 2 列到表 B 第 2 列和第 4 列的数据

问题描述 投票:0回答:1
我对此很陌生,所以请告诉我我滥用的行话。

在我从中提取的表中,我们将其称为“活动跟踪”,有两列,我们将其称为“从位置 ID”和“到位置 ID”。这些 ID 列的数据与我们称为“位置”的另一个表中的“位置 ID”列相匹配,该表还包含一个我们称为“显示名称”的列,这是一个易于理解的视觉效果(告诉用户某物在哪里)而不是一堆随机数。

我正在尝试为“从位置显示”和“到位置显示”创建列,与“活动跟踪”同一张表上的“从位置 ID”和“到位置 ID”列配对,但我无法计算了解如何在相关列中显示每列的唯一值。

select activity_tracking.from_locn as "From Location ID", case when activity_tracking.from_locn is not null then locations.display_name else '' end as "From Location", activity_tracking.to_locn as "To Location ID", case when activity_tracking.to_locn is not null then locations.display_name else '' end as "To Location" from activity_tracking full join locations on activity_tracking.to_locn = locations.location_id
我已附上该问题的屏幕截图

here

sql oracle join
1个回答
0
投票
您似乎应该将位置表连接到活动表两次 - 1. 位置来自 ID 和 2. 位置至 ID。使用左连接,这样您就可以保留获取的所有活动行,并在位置 ID 丢失的地方留出间隙......

-- S a m p l e D a t a : WITH locations (LOCN_ID, DISPL_NAME) AS ( Select '001', 'ARK-001-001-A01' From Dual Union All Select '008', 'ARK-001-001-A08' From Dual Union All Select '009', 'ARK-001-001-B01' From Dual Union All Select '052', 'ARK-001-001-F4' From Dual ), activities (ID, LOCN_FROM_ID, LOCN_TO_ID) AS ( Select 1, '001', '009' From Dual Union All Select 2, Null, '052' From Dual Union All Select 3,'008', '052' From Dual Union All Select 4, '009', '052' From Dual )
--      S Q L :
Select a.LOCN_FROM_ID "FROM_LOCN_ID", lfrom.DISPL_NAME "FROM_LOCN_DISPL",
       a.LOCN_TO_ID "TO_LOCN_ID", lto.DISPL_NAME "TO_LOCN_DISPL"
From   activities a
Left Join locations lfrom ON(a.LOCN_FROM_ID = lfrom.LOCN_ID)
Left Join locations lto ON(a.LOCN_TO_ID = lto.LOCN_ID)
Order By  a.ID
/*      R e s u l t :
FROM_LOCN_ID FROM_LOCN_DISPL TO_LOCN_ID TO_LOCN_DISPL  
------------ --------------- ---------- ---------------
001          ARK-001-001-A01 009        ARK-001-001-B01
                             052        ARK-001-001-F4 
008          ARK-001-001-A08 052        ARK-001-001-F4 
009          ARK-001-001-B01 052        ARK-001-001-F4    */
    
© www.soinside.com 2019 - 2024. All rights reserved.