ジョブのリストを含むデータベースがあります。たとえば、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 年だけを返したいと思います。つまり、ある人が 1 年間に 2 つの仕事をしている場合、2 年ではなく 1 年としてカウントしたいと考えています。重複するジョブは 2 だけでなく、任意の数になる可能性があります。すべての重複の合計期間を差し引いてクエリを調整しようとしました。これは 2 つの重複するジョブでうまく機能しますが、それ以上の場合は失敗します。