【发布时间】:2013-11-22 06:00:03
【问题描述】:
我在 SQL Server 2008 中有这样的表:
Company_Refno CompanyID IsActive StartDate EndDate
100 1 是 2000 年 2 月 10 日 2000 年 2 月 11 日
100 2 是 2000 年 2 月 10 日 空值
100 3 ñ 2000 年 3 月 10 日 2000 年 2 月 11 日
100 4 ñ 2000 年 3 月 10 日 2000 年 2 月 11 日
101 5 是 1998 年 5 月 5 日 2008 年 6 月 7 日
101 6 是 1998 年 2 月 2 日 2008 年 6 月 7 日
102 7 是 2007 年 11 月 11 日 2010 年 12 月 12 日
102 7 是 2007 年 11 月 11 日 2010 年 12 月 12 日
我的要求是:
a) 对于给定的 Company_Refno,至少取 1 个活动 ID(即 IsActive = Y),然后取那个
b) 如果一家公司有超过 1 个活动 ID,但只有 1 个打开记录(即结束日期为空),则采用该
c) 如果公司有多个活动记录,有多个结束日期,则取最早的结束日期记录
d) 如果结束日期相同,则取最早的开始日期
e) 如果开始日期相同,则取前 1
因此,在此示例中,对于 Company_Refno 100,我将选择 ID 2(因为它处于活动状态且结束日期为 NULL),
将选择 RefNo 101,ID 6(活动,最早开始日期), RefNo 102, ID 7 (top 1) 将被选中(因为开始和结束日期相同)
谁能帮助我如何使用 SQL Query 实现这一目标?
非常感谢。
【问题讨论】:
标签: sql-server-2008