如何检查是否有日期重叠?

时间:2015-09-09 18:42:09

标签: sql sql-server sql-server-2008 sql-server-2008-r2

试图找出两种或更多种药物是否存在60天(两次30天供应)重叠。下表有一个人名,填写/重新填写日,药物和供应天数。

红色高光日期与这些药物25605和25700重叠供应60天。

如何构建SQL以确定是否至少有60天重叠? 任何建议将不胜感激。 谢谢 enter image description here

1 个答案:

答案 0 :(得分:0)

这种类型的计算在SQL Server中很麻烦,因为日期函数很笨重,并且没有ds.read(fileName).map { c => PurchaseInfo(...)}.force least()函数。

但是,你可以做到。它本质上是一个聚合的自联接。关键的想法是确定重叠的日子。重叠期的开始和结束是greatest()dos。这只是一个复杂的dos + days_supply语句:

case

代码可能有一个错误 - 重叠总是有点令人困惑,但是一些真实的数据通常会很快清除。

注意:这假定药物不与自身重叠。这是一个重要的假设;否则重叠的日子将被克服。