Was ich brauche ist, alle Datensätze zurückzugeben, die sich gegenseitig überlappen können.Überlappende Daten suchen und überlappende Datensätze zurückgeben
-- Create Temp Table
CREATE TABLE #Overlap
(SubType varchar(50),
Cause varchar(9),
CircuitID varchar(100),
BegDate date,
EndDate date,
AmtSought decimal(11,2),
Remarks varchar(max))
--Insert records
INSERT INTO #Overlap VALUES('Original','201500018','36/KQ--/831670/IP /NUVX/','2016-12-01','2016-12-31',354.41,'Rec 1')
INSERT INTO #Overlap VALUES('Original','201500009','36/VCID/826061/IP/NUVX','2016-08-11','2016-08-12',200.50,'Rec 2')
INSERT INTO #Overlap VALUES('Original','201500018','36/KQ--/831670/IP /NUVX/','2016-11-15','2016-12-14',100.25,'Rec 3')
INSERT INTO #Overlap VALUES('Original','201500018','36/KQ--/831670/IP /NUVX/','2016-12-16','2017-01-15',300.75,'Rec 4')
INSERT INTO #Overlap VALUES('Original','201500018','36/KQ--/831670/IP /NUVX/','2017-01-01','2017-01-01',500.00,'Rec 5')
INSERT INTO #Overlap VALUES('Original','201500009','36/VCID/826061/IP/NUVX','2016-07-01','2016-07-31',100.50,'Rec 6')
Mein Ergebnis würde wie folgt aussehen:
SubType Cause CircuitID BegDate EndDate AmtSought Remarks
------------------- -------------------------- ---------- ---------- --------- --------
Original 201500018 36/KQ--/831670/IP /NUVX/ 2016-11-15 2016-12-14 100.25 Rec 3
Original 201500018 36/KQ--/831670/IP /NUVX/ 2016-12-01 2016-12-31 354.41 Rec 1
Original 201500018 36/KQ--/831670/IP /NUVX/ 2016-12-16 2017-01-15 300.75 Rec 4
Original 201500018 36/KQ--/831670/IP /NUVX/ 2017-01-01 2017-01-01 500.00 Rec 5
ich dies aus einem Beispielcode versucht, habe ich gesehen, aber es ist nicht das gewünschte Ergebnis zurück.
Select * from #Overlap a
Inner Join #Overlap b
on a.SubType = b.SubType
And a.Cause = b.Cause
And a.CircuitID = b.CircuitID
And b.BegDate between a.BegDate and a.endDate
And b.BegDate < a.endDate
Vielen Dank, dass Sie auf den eindeutigen Schlüssel hingewiesen haben. Ich habe es vergessen. Dieser Code funktioniert großartig! –
Tipp: Die allgemeine Überprüfung auf überlappende Bereiche ist 'Start1 <= End2 und Start2 <= End1'. – HABO
Danke @HABO. Es ist so einfach :) – TriV