【发布时间】:2018-05-23 14:18:42
【问题描述】:
我正在尝试确定某个组织在我们的“监控”列表中的日期范围。
我的数据如下所示:
OrgCode OrgName ReviewDate MonitorList
8000 Organization A 3/6/2014 1
8000 Organization A 6/4/2014 1
8000 Organization A 9/4/2014 1
8000 Organization A 12/4/2014 0
8000 Organization A 3/5/2015 1
8000 Organization A 6/4/2015 1
8000 Organization A 9/16/2015 1
8000 Organization A 12/16/2015 1
8000 Organization A 3/9/2016 1
8000 Organization A 6/2/2016 1
8000 Organization A 9/8/2016 1
8000 Organization A 12/8/2016 1
8000 Organization A 3/9/2017 0
8000 Organization A 6/14/2018 0
我正在寻找的查询输出如下所示:
OrgCode OrgName MonitorStartDate MonitorEndDate
8000 Organization A 3/6/2014 12/4/2014
8000 Organization A 3/5/2015 3/9/2017
这个组织,即组织 A,曾两次出现在我们的监控列表中:从 3/6/2014 到 12/4/2014,以及 3/5/2015 到 3/9/2017。
我尝试了几种方法来实现这一点,包括,
-
LEAD()和LAG()的变种;并且, -
GROUP BY OrgCode, OrgName, MonitorList并将 MonitorStartDate 定义为MIN(ReviewDate)并将 MonitorEndDate 定义为MAX(ReviewDate)。
第二种方法没有考虑到这些组织可能多次进入/退出监控列表的事实。我仍然认为LEAD() 或LAG() 的某些组合可能有效;但是,不是他们自己。
你们能提供的任何指导都会很棒,感谢您的帮助!
【问题讨论】:
标签: sql tsql sql-server-2012