【发布时间】:2015-07-06 19:27:04
【问题描述】:
我正在使用存储开始日期、结束日期和用于排序的整数的现有表。
对于给定的开始和结束日期,我需要能够确定具有重叠日期范围的条目的最小可用整数。
例如,我的表可能会存储这些记录:
7 月 8 日 -> 7 月 9 日,排序指数为 0。
7 月 9 日 -> 7 月 10 日,排序指数为 1。
7 月 9 日 -> 7 月 11 日,排序指数为 2。
然后,给定日期范围 7 月 10 日 -> 7 月 11 日,我想将排序索引设置为 0。
它需要在输入日期范围内没有其他条目的情况下工作(因此它可以默认为 0)。日期范围并不总是相隔两个日期,并且排序索引没有限制。
这是我所拥有的,它只返回最大订单索引之上的一个:
SELECT ISNULL(MAX(order_index),-1) + 1 FROM table
WHERE start_date <= @end AND end_date >= @start)
我尝试使用this answer,但无法获得预期的结果。
【问题讨论】:
-
为什么 7 月 10 日至 11 日会为零?
-
你在找最小的整数,为什么用
MAX? -
@TabAlleman 这将是 0,因为在 7 月 10 日至 11 日之间,订单索引 1 和 2 已被使用,但 0 可用,因为 7 月 8 日至 9 日的记录不在范围内。
标签: sql sql-server