我有一個包含作業列表的數據庫;例如,它可能是CV中以前工作經歷的列表。 我想知道一個人被僱用多少天;所以,我寫了這個查詢:查找一系列日期間隔的總持續時間
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個重疊的工作很合適,但如果有更多的工作,這將失敗。
雖然解決方案可以是任何語言,但我的計劃是創建一個SQL函數,所以我更喜歡純SQL。 –
你使用哪個sql引擎? MySQL的? SQL Server?僅在sql中可能會很複雜。 – csg
SQL Server 2008 r2 –