0
取最小日期開始我有兩個表asg
和work rship
SQL查詢來對每個員工
在工作rship桌子上有date_start
爲每個員工。對於一些員工DATE_START是重複的,所以我不得不選擇從工作rship表
的min(date_start)
爲了這個,我寫了一個查詢:
SELECT assignment_name,
REGEXP_SUBSTR(ASSIGNMENT_NAME, '[0-9]+') PERSON_NUMBER,
NVL(wrk.date_start,t.effective_start_date) ,
NVL(WRK.WORKER_TYPE,'E'),
NVL(WRK.LEGAL_EMPLOYER_NAME, 'N/A')
FROM
(SELECT apps.assignment_table.*,
COUNT(*) OVER (PARTITION BY assignment_name, effective_start_date, effective_end_date, effective_latest_change) AS c
FROM apps.assignment_table
) T
LEFT OUTER JOIN
(SELECT *
FROM apps.work_table
WHERE date_start =
(SELECT MIN(date_start) FROM apps.work_table
)
) wrk
ON regexp_substr(t.assignment_name, '[0-9]+')=wrk.person_number
WHERE C =1;
但在上面的查詢我也只是選擇選擇分鐘的錯誤( date_start)from apps.work_table這意味着min(date_start)來自整個表格。 取而代之,我應該在內聯查詢本身中包含regexp_substr(t.assignment_name, '[0-9]+')=wrk.person_number
。
但現在當我包括它..它不工作。
爲什麼不選擇personnumber,分鐘(DATE_START)......從TABLE1 JOIN表2? – sagi
將不得不使用group .. ..必須從上面的查詢中獲取13列...這似乎更好 –
那不是,您正在從工作表中選擇兩次,並在分配表上使用一次分析函數。 – sagi