我有一个包含工作列表的数据库;例如,它可以是简历中以前工作经验的列表。我想知道一个人受雇了多少天;所以,我写了这个查询:
SELECT sum(datediff(dd,isnull(date_begin,getdate()),isnull(date_end,getdate()))+1)
FROM jobs
WHERE person_id=X
问题是,有时这些日期会重叠。例子:
person date_from date_to Comment
John 01-Jan-2011 31-Dec-2012 Two years working at ABC
John 01-Jan-2012 31-Dec-2013 Two years of extra work at evening
在这种情况下,我的查询将返回 4 年,但我只想返回 3 年。换句话说,如果一个人一年有 2 份工作,我希望它计为 1 年,而不是 2 年。重叠作业可以是任意数字,而不仅仅是 2。我尝试通过减去所有重叠的总持续时间来调整查询,这适用于 2 个重叠作业,但如果有更多重叠作业,这将失败。