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