0
我能有一個像1298287 , 82727-2 , 8367-3,7363 etc
LEFT OUTER JOIN在SQL查詢
數字我使用正則表達式來消除-2 -3從這些數字來獲取個人數列分配號。現在消除後,我需要將此人員號碼與另一個表格中的人員號碼進行比較。
當我爲此使用連接時,它檢索的行數較少。我在表xx_ass_table
中有13000行,我需要work_stg
表中的僱主名稱和工作人員類型,我需要將此人加入 ,其中人員編號從work_stg
。
select
assignment_name,
regexp_substr(assignment_name, '[0-9]+') person_number,
wrk.employer_name ,
wrk.TIME,
STEP_ENTRY_DATE ,
SYSTEM_PERSON_TYPE ,
WORK_ATHOME_FLAG ,
worker_category,
effective_start_date,
effective_end_date,
from
(select
xx_ass_table.*,
COUNT(*) OVER (PARTITION BY assignment_name,
effective_start_date,
effective_end_date,
effective_latest_change) as c
from xx_ass_table) t,
xx_work_stg wrk
where
regexp_substr(t.assignment_name(+), '[0-9]+') = wrk.person_number
and c = 1;
表xx_ass_table
有幾個人號碼不屬於IB工作關係表,這就是爲什麼我使用左連接。但是這個查詢返回了4000行,當它返回13k行時。
停止使用專有的'(+)'操作符。請使用適當的「LEFT JOIN」 - 即使Oracle建議。 –