У меня есть таблица транзакций с датой начала и окончания. Проблема в том, что часто эти даты транзакций перекрываются друг с другом, и я хочу сгруппировать эти сценарии вместе.Группировка строк, если их даты совпадают, и ранжирование их
Например, в случае, указанном ниже, транзакция № 1 является транзакцией «корень», а # 2- # 4 перекрываются с # 1 и/или друг с другом. Однако транзакция №5 не перекрывается ни с чем, следовательно, это новая «корневая» транзакция.
+----------------+-----------+-----------+----------------------------------+
| Transaction ID | StartDate | EndDate | |
+----------------+-----------+-----------+----------------------------------+
| 1 | 1/1/2017 | 1/3/2017 | root transaction |
| 2 | 1/2/2017 | 1/6/2017 | overlaps with #1 |
| 3 | 1/5/2017 | 1/10/2017 | overlaps with #2 |
| 4 | 1/3/2017 | 1/13/2017 | overlaps with #2 and #3 |
| 5 | 1/15/2017 | 1/20/2017 | no overlap, new root transaction |
+----------------+-----------+-----------+----------------------------------+
Ниже приведено, как я хочу, чтобы результат выглядел. Я хочу
- Определение основной сделки (столбец 4)
- ранжировать сделок в цепочке EndDate, так что корень всегда = 1
+----------------+-----------+-----------+------------------+------+
| Transaction ID | Start | End | Root Transaction | Rank |
+----------------+-----------+-----------+------------------+------+
| 1 | 1/1/2017 | 1/3/2017 | 1 | 1 |
| 2 | 1/2/2017 | 1/6/2017 | 1 | 2 |
| 3 | 1/5/2017 | 1/10/2017 | 1 | 3 |
| 4 | 1/3/2017 | 1/13/2017 | 1 | 4 |
| 5 | 1/15/2017 | 1/20/2017 | 5 | 1 |
+----------------+-----------+-----------+------------------+------+
Как я бы об этом подумал в SQL?
Пожалуйста, отметьте свой вопрос с помощью версии SQL Server. –