Sql server 连续资格日期的SQL查询

Sql server 连续资格日期的SQL查询,sql-server,Sql Server,如何为下面的内容编写查询 我有这样的数据 id eff date term date C 20000101 20050228 C 20000501 20120229 C 20060101 20120301 我需要检查连续资格,如果连续,我需要清除其他记录。对于上面的例子,我需要输出为 id Eff date Term date C 20000101 20120301 我需要删除重叠的范围。在上面的例子中,我有重叠的资格范围。如果我有另一条

如何为下面的内容编写查询

我有这样的数据

id   eff date   term date
 C   20000101   20050228
 C   20000501   20120229
 C   20060101   20120301
我需要检查连续资格,如果连续,我需要清除其他记录。对于上面的例子,我需要输出为

id   Eff date   Term date
C    20000101  20120301

我需要删除重叠的范围。在上面的例子中,我有重叠的资格范围。如果我有另一条输入记录(第四条),比如说C 20130101 20130531,那么我的输出应该是两条记录。C 20000010 20120301和C 20130101 20130531

我不确定连续资格的业务规则-但不知道这是否可以做到:

 SELECT id, min(Eff_date), max(Term_date)
 FROM my_table
 GROUP BY id

“连续资格”是什么意思?为什么只应选择该行?请扩展您的请求。我需要删除重叠的范围。在上面的示例中,我有重叠的资格范围。如果我有另一条输入记录(第四条),比如说C 20130101 20130531,那么我的输出应该是两条记录。C 20000010 20120301和C 20130101 201305311我需要删除重叠范围。在上述示例中,我有重叠的资格范围。如果我有另一条输入记录(第四条),比如说C 20130101 20130531,那么我的输出应该是两条记录。C 20000101 20120301和C 20130101 20130531这在SQL中是可以做到的,但我认为需要诸如LAG之类的分析函数,以便我们可以访问前一行。您的DBMS是否支持分析功能。或者,我更倾向于按程序这样做。运行此查询的语言或环境是什么?