我有一個查詢,它將刪除重複的行assignment_name, effective_start_date, effective_end_date, effective_latest_change
。員工的細節有兩個表SQL查詢中的重複行
xx_as_table:
Ass_nmber eff_s_date eff_e_date effective_l_change special_ceiling date_Start employer_name worker_type
-------------------------------------------------------------------------------------
10228 01-jan-1990 31-dec-4172 1 0 01-feb-1989 XYZ Ltd E
10228 03-feb-1989 31-dec-1989 2 0 01-feb-1989 XYZ Ltd E
xx_wrk_table
ass_number date_Start employer_name worker_type
------------------------------------------------------------
10228 01-feb-1989 XYZ Ltd E
10228 01-jan-1991 ABC Ltd P
現在,我想如下以檢索上述數據的查詢:
Ass_nmber eff_s_date eff_e_date eff_l_change special_ceiling date_Start employer_name worker_type
---------------------------------------------------------------------------------------------
10228 01-jan-1990 31-dec-4172 1 0 01-feb-1989 XYZ Ltd E
10228 03-feb-1989 31-dec-1989 2 0 01-feb-1989 XYZ Ltd E
我想從最早的date_start從xx_wrk_table中獲取date_start,並根據最小的date_Start獲取詳細信息。而且沒有重複行應與同一ASSIGNMENT_NAME,effective_start_date,effective_end_date,effective_latest_change
在那裏爲此,我寫了一個查詢:
select
ass_number,
regexp_substr(ass_number, '[0-9]+') person_number,
effective_start_date,
effective_end_date,
nvl((select min (wrk.date_start)
from
XX_WRK_STG
where
WRK.PERSON_NUMBER = regexp_substr(assignment_number, '[0-9]+')), effective_start_date) D, t.effective_start_date),
nvl(wrk.worker_type, 'E'),
nvl(wrk.employer_name, 'XYZ'),
effective_latest_change
from (SELECT xx_as_table.*,
COUNT(*) OVER (PARTITION BY assignment_name,
effective_start_date,
effective_end_date,
effective_latest_change) AS c
FROM xx_as_table) T
left outer join
XX_WRK_STG wrk
on regexp_substr(t.assignment_name, '[0-9]+')=wrk.person_number
where c=1;
但此查詢不工作,並針對每個ass_number多個數據越來越檢索來自wrk_table。如何修改我的查詢以獲得預期的結果?
您的預期結果與第一張表完全相同。你能詳細說明你想做什麼嗎? –
@GordonLinoff 我試圖獲取從xx_ass_table使得ASSIGNMENT_NAME重複的數據的細節,effective_start_date,effective_end_date,effective_latest_change被移除並且爲DATE_START,worker_type和employer_name最小 DATE_START從xx_wrk_table應該針對該之間的共同的ass_number被擷取兩個表 –