【发布时间】:2018-04-22 20:51:40
【问题描述】:
我有一个 OPL_Dates 表,其中开始日期和结束日期如下:
dbo.OPL_Dates
ID Start_date End_date
--------------------------------------
12345 1975-01-01 2001-12-31
12345 1989-01-01 2004-12-31
12345 2005-01-01 NULL
12345 2007-01-01 NULL
12377 2009-06-01 2009-12-31
12377 2013-02-07 NULL
12377 2010-01-01 2012-01-01
12489 2011-12-31 NULL
12489 2012-03-01 2012-04-01
我正在寻找的输出是:
ID Start_date End_date
-------------------------------------
12345 1975-01-01 2004-12-31
12345 2005-01-01 NULL
12377 2009-06-01 2009-12-31
12377 2010-01-01 2012-01-01
12377 2013-02-07 NULL
12489 2011-12-31 NULL
基本上,我想显示 OPL 期间(如果有)之间的差距,否则我需要开始日期的最小值和结束日期的最大值,对于特定的 ID。NULL 表示可以转换为“9999”的开放式日期-12-31 英寸。
【问题讨论】:
-
没有相邻空行的间隙?
-
添加赏金并提供所有场景
-
@maSTAShuFu 感谢您的回复,我不完全明白您的问题,但是,如果他的期间有间隔,每个 ID 的开始和结束日期。对于 12345,我想要他的开始日期是 1975-01-01,他的结束日期是 2004-12-31,因为开始日期 1989-01-01 已经包含在上述时间段内,然后是开始日期 2005-01 -01 到结束日期“NULL”作为开始日期 2007-01-01 也属于时间段 2005-01-01 到 NULL。
-
@maSTAShuFu 我添加了另一个场景。请看一下。如果您有任何问题,请告诉我。
-
嗨,欢迎来到 SO。如果您为此编写了无法开始工作的代码,那么您来对地方了。只需edit your question 并将代码的相关部分添加到其中,因为没有它我们无能为力。另请参阅How to Ask。
标签: sql sql-server tsql date