我已经创建了这样一个表,需要从标记数据中获取jobID,并从另一个具有JobID的表中检索JobDescription我是这个整个SQL环境的新手,并且无法找到一种方法来使以下程序正确。
select jobdescription,jobid from job
Where jobid =(select jobid from contract_job having max(to_date(enddate)-
to_date(startdate)) as date_diff);
顺便说一句,我在网站上发现了类似的问题,但那些对我没什么帮助,可能是因为我对这个领域还没有更多的了解。 让我解释一下如果难以解释的情况。 我有两张桌子:
JOB (JobID, JobDescription, UrgencyLevel, JobAddress, Postcode, SelectedBusinessABNNumber, IndustryID)
CONTRACT_JOB (JobID, StartDate, EndDate, CorporateClientNo)
我在这里要做的是,我希望通过减去EndDate和StartDate来获得具有最高合同期的作业名称(JobDescription),并显示具有相同JobID的JobDescription。
答案 0 :(得分:0)
select top 1 j.jobdescription
from job_contract jc
inner join job j on j.jobid=jc.jobid
order by jc.enddate-jc.startdate desc
答案 1 :(得分:-1)
这会奏效。如果有两个相同的句点,你可以使用rank而不是rownum。
WITH all_periods AS (
SELECT MAX(enddate - startdate) as period, jobid
FROM contract_job
GROUP BY jobid
ORDER BY 1 DESC)
SELECT jobdescription, jobid
FROM all_periods
JOIN job USING (jobid)
WHERE rownum = 1