我在一个名为#MPR的表中有一组记录。我试图完成的是找到表中的任何记录在另一个名为#Lookup的表中有重叠日期,并且具有匹配的ProviderID,Sub Type,CauseID和CircuitID。如果是这样,请返回#MPR表中的所有记录以及#Lookup表中的相应重叠记录,其中包含以下列LookupID,BegDate,EndDate和Amt。查找从一个表到另一个表的冲突重叠日期
-- Create Temporary Table
CREATE TABLE #MPR
(
MprID int IDENTITY(1,1),
ProviderID int,
RowNo int,
SubType varchar(50),
CauseID int,
CircuitID int,
BegDate date,
EndDate date,
Amt decimal(11,2),
Remarks varchar(max)
)
--Insert records
INSERT INTO #MPR VALUES(673,2,'Original',439,4852,'2016-12-01','2016-12-31',100,'Rec A')
INSERT INTO #MPR VALUES(673,15,'Original',439,4852,'2016-12-21','2016-12-31',200,'Rec B')
INSERT INTO #MPR VALUES(100,21,'Original',500,5000,'2016-12-01','2016-12-01',300,'Rec C')
INSERT INTO #MPR VALUES(673,24,'Original',439,4852,'2016-12-05','2017-01-31',400,'Rec D')
-- Create Temporary Table
CREATE TABLE #Lookup
(
LookupID int IDENTITY(1,1),
ProviderID int,
SubType varchar(50),
CauseID int,
CircuitID int,
BegDate date,
EndDate date,
Amt decimal(11,2),
)
--Insert records
INSERT INTO #Lookup Values(673,'Original',439,4852,'2016-10-01','2016-10-31',200.00)
INSERT INTO #Lookup Values(100,'Original',500,5000,'2016-10-01','2016-10-31',200.00)
INSERT INTO #Lookup Values(100,'Original',500,5000,'2016-10-01','2016-11-30',200.00)
INSERT INTO #Lookup Values(673,'Original',439,4852,'2016-11-01','2016-11-30',200.00)
INSERT INTO #Lookup Values(673,'Original',439,4852,'2016-12-01','2016-12-31',200.00)
INSERT INTO #Lookup Values(673,'Original',439,4852,'2017-01-01','2017-01-31',200.00)
INSERT INTO #Lookup Values(100,'Original',500,5000,'2016-12-01','2016-12-31',200.00)
INSERT INTO #Lookup Values(673,'Original',439,6565,'2017-01-01','2017-01-31',200.00)
--Drop table #mpr
--Drop table #Lookup
我的结果:
MprID ProviderID RowNo SubType CauseID CircuitID BegDate EndDate Amt LookupID BegDate EndDate Amt
----------- ----------- ----------- -------- ----------- ----------- ---------- ---------- --------- ----------- ---------- ---------- --------
1 673 2 Original 439 4852 2016-12-01 2016-12-31 100.00 5 2016-12-01 2016-12-31 200.00
2 673 15 Original 439 4852 2016-12-21 2016-12-31 200.00 5 2016-12-01 2016-12-31 200.00
3 100 21 Original 500 5000 2016-12-01 2016-12-01 300.00 7 2016-12-01 2016-12-31 200.00
4 673 24 Original 439 4852 2016-12-05 2017-01-31 400.00 5 2016-12-01 2016-12-31 200.00
4 673 24 Original 439 4852 2016-12-05 2017-01-31 400.00 6 2017-01-01 2017-01-31 200.00
请看看[这里](https://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap/325964#325964)这样的问题。 –
当你说“返回#MPR表中的所有记录”时,这有点令人困惑。你是指所有专栏?如果你想查看更多的行,那么这些行与那些与'#Lookup'表重叠的行如何关联? – ErikE
@ErikE,你可以在下面的帖子中找出我需要的。这正是我需要的。 –