在我从中提取的表中,我们将其称为“活动跟踪”,有两列,我们将其称为“从位置 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
我已附上该问题的屏幕截图
-- 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 */