How do I know which row is overlapping in table1 comparing with the table2?
I have two tables each table has multi rows for date and time columns. I want to know which row in table1 is overlapping comparing with the table2 considering date and time ranges.
Table1
SrNo DateStart DateEnd TimeStart TimeEnd IsOverlapping
1 2021-08-01 2021-08-01 01:10:00 01:20:00 NULL
2 2021-08-01 2021-08-01 01:30:00 01:45:00 NULL
3 2021-08-01 2021-08-01 01:31:00 03:00:00 NULL
4 2021-08-02 2021-08-04 01:30:00 01:45:00 NULL
5 2021-08-02 2021-08-04 09:00:00 10:30:00 NULL
Table2
SrNo DateStart DateEnd TimeStart TimeEnd
1 2021-08-01 2021-08-01 01:00:00 01:15:00
2 2021-08-01 2021-08-01 02:01:00 02:30:00
3 2021-08-01 2021-08-01 03:01:00 03:30:00
4 2021-08-01 2021-08-01 04:01:00 05:10:00
5 2021-08-02 2021-08-04 10:00:00 10:15:00
6 2021-08-02 2021-08-04 11:01:00 11:30:00
EXPECTED RESULT:
SrNo DateStart DateEnd TimeStart TimeEnd IsOverlapping
1 2021-08-01 2021-08-01 01:10:00 01:20:00 1
2 2021-08-01 2021-08-01 01:30:00 01:45:00 0
3 2021-08-01 2021-08-01 01:31:00 03:00:00 1
4 2021-08-02 2021-08-04 01:30:00 01:45:00 0
5 2021-08-02 2021-08-04 09:00:00 10:30:00 1
SQL SCRIPT FOR TABLES
DECLARE @DateStart DATE=CONVERT(DATE,'01-Aug-2021'), @DateEnd DATE=CONVERT(DATE,'01-Aug-2021'), @DateStart2 DATE=CONVERT(DATE,'02-Aug-2021'), @DateEnd2 DATE=CONVERT(DATE,'04-Aug-2021')
DROP TABLE IF EXISTS [#Table1];
SELECT ROW_NUMBER()OVER(ORDER BY (SELECT NULL))[SrNo], *,(NULL)IsOverlapping INTO [#Table1] FROM (
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'01:10:00')TimeStart, CONVERT(TIME(0),'01:20:00')TimeEnd UNION
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'01:30:00')TimeStart, CONVERT(TIME(0),'01:45:00')TimeEnd UNION
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'01:31:00')TimeStart, CONVERT(TIME(0),'03:00:00')TimeEnd UNION
SELECT @DateStart2[DateStart],@DateEnd2[DateEnd], CONVERT(TIME(0),'01:30:00')TimeStart, CONVERT(TIME(0),'01:45:00')TimeEnd UNION
SELECT @DateStart2[DateStart],@DateEnd2[DateEnd], CONVERT(TIME(0),'09:00:00')TimeStart, CONVERT(TIME(0),'10:30:00')TimeEnd
)t;SELECT * FROM [#Table1];
DROP TABLE IF EXISTS [#Table2];
SELECT ROW_NUMBER()OVER(ORDER BY (SELECT NULL))[SrNo],* INTO [#Table2] FROM (
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'01:00:00')TimeStart, CONVERT(TIME(0),'01:15:00')TimeEnd UNION
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'02:01:00')TimeStart, CONVERT(TIME(0),'02:30:00')TimeEnd UNION
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'03:01:00')TimeStart, CONVERT(TIME(0),'03:30:00')TimeEnd UNION
SELECT @DateStart[DateStart],@DateEnd[DateEnd], CONVERT(TIME(0),'04:01:00')TimeStart, CONVERT(TIME(0),'05:10:00')TimeEnd UNION
SELECT @DateStart2[DateStart],@DateEnd2[DateEnd], CONVERT(TIME(0),'10:00:00')TimeStart, CONVERT(TIME(0),'10:15:00')TimeEnd UNION
SELECT @DateStart2[DateStart],@DateEnd2[DateEnd], CONVERT(TIME(0),'11:01:00')TimeStart, CONVERT(TIME(0),'11:30:00')TimeEnd
)t;SELECT * FROM [#Table2];