【发布时间】:2017-06-15 16:17:28
【问题描述】:
create table #productcov
(
[group] varchar(20), -- as business
account varchar(10), -- as business location
member varchar(10), -- as member
product varchar(10), -- as health product
[plan] varchar(10), -- as product type
StartTime datetime, -- as beginning of coverage period
EndTime datetime -- as end of coverage period
)
go
insert into #productcov values
('NN00001','10001','1234567890','ADD','A1000','2010-10-01 00:00:00' , '2012-09-30 00:00:00'),
('NN00001','10001','1234567890','ADD','A1000','2012-10-01 00:00:00' , '2013-09-30 00:00:00'),
('NN00001','10001','1234567890','ADD','A1000','2013-01-01 00:00:00' , '2013-12-31 00:00:00'),
('NN00001','10001','1234567890','ADD','B1000','2010-01-01 00:00:00' , '2014-12-31 00:00:00'),
('NN00001','10001','1234567890','ADD','B1000','2015-01-01 00:00:00' , '2016-12-31 00:00:00'),
('NN00001','10001','1234567890','LIF','A1000','2010-10-01 00:00:00' , '2012-09-30 00:00:00'),
('NN00001','10001','1234567890','LIF','A1000','2012-10-01 00:00:00' , '2013-09-30 00:00:00'),
('NN00001','10001','1234567890','LIF','A1000','2013-01-01 00:00:00' , '2013-12-31 00:00:00'),
('NN00001','10001','1234567890','LIF','B1000','2010-01-01 00:00:00' , '2014-12-31 00:00:00'),
('NN00001','10001','1234567890','LIF','B1000','2015-01-01 00:00:00' , '2016-12-31 00:00:00')
select * from #productcov
上面的示例表适用于单个组中的单个成员。我试图从#productcov 表中的十条记录中仅选择第二条和第三条以及第七条和第八条记录,其中医疗产品的承保日期与成员的产品重叠。这是一个审计过程,用于清理覆盖日期中的重叠数据。表中重要的重叠日期需要按组、帐户、成员、产品和计划进行分组。
我几天来一直在尝试寻找解决方案,但结果一无所获!任何帮助表示赞赏。
所需的输出将是下面列出的 4 条记录:
组、帐户、成员、产品、计划、开始日期、结束日期
'NN00001','10001','1234567890','ADD','A1000','2012-10-01 00:00:00','2013-09-30 00:00:00',
'NN00001','10001','1234567890','ADD','A1000','2013-01-01 00:00:00','2013-12-31 00:00:00'
'NN00001','10001','1234567890','LIF','A1000','2012-10-01 00:00:00','2013-09-30 00:00:00'
'NN00001','10001','1234567890','LIF','A1000','2013-01-01 00:00:00','2013-12-31 00:00:00'
【问题讨论】:
标签: sql date datetime select overlap