В настоящее время есть проблема с несколькими записями, которые определены в окне даты. Некоторые из них windows пересекаются или мульти windows пересекаются. То, что мне нужно сделать, это получить правильную последовательность windows от эффективного и до.
Ниже приведен текущий набор данных:
╔═════╦═══════════════╦═════════════╗
║ Row ║ EffectiveFrom ║ EffectiveTo ║
╠═════╬═══════════════╬═════════════╣
║ 1 ║ 7/12/2010 ║ 15/01/2012 ║
╠═════╬═══════════════╬═════════════╣
║ 2 ║ 1/01/2012 ║ 31/12/2042 ║
╠═════╬═══════════════╬═════════════╣
║ 3 ║ 15/01/2012 ║ 17/04/2012 ║
╠═════╬═══════════════╬═════════════╣
║ 4 ║ 17/04/2012 ║ 15/11/2012 ║
╠═════╬═══════════════╬═════════════╣
║ 5 ║ 15/11/2012 ║ 1/06/2013 ║
╠═════╬═══════════════╬═════════════╣
║ 6 ║ 1/06/2013 ║ 9/09/2013 ║
╠═════╬═══════════════╬═════════════╣
║ 7 ║ 9/09/2013 ║ 21/01/2020 ║
╠═════╬═══════════════╬═════════════╣
║ 8 ║ 23/12/2016 ║ 28/12/2019 ║
╠═════╬═══════════════╬═════════════╣
║ 9 ║ 23/12/2016 ║ 21/02/2020 ║
╠═════╬═══════════════╬═════════════╣
║ 10 ║ 21/01/2020 ║ 1/01/2100 ║
╠═════╬═══════════════╬═════════════╣
║ 11 ║ 21/02/2020 ║ 24/06/2100 ║
╚═════╩═══════════════╩═════════════╝
Требуемый вывод этих данных как следует:
╔═══════════╦═══════════════╦═════════════╗
║ Row ║ EffectiveFrom ║ EffectiveTo ║
╠═══════════╬═══════════════╬═════════════╣
║ 1 ║ 7/12/2010 ║ 1/01/2012 ║
╠═══════════╬═══════════════╬═════════════╣
║ 1,2 ║ 1/01/2012 ║ 15/01/2012 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,3 ║ 15/01/2012 ║ 17/04/2012 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,4 ║ 17/04/2012 ║ 15/11/2012 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,5 ║ 15/11/2012 ║ 1/06/2013 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,6 ║ 1/06/2013 ║ 9/09/2013 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,7 ║ 9/09/2013 ║ 23/12/2016 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,7,8,9 ║ 23/12/2016 ║ 28/12/2019 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,7,9 ║ 28/12/2019 ║ 21/01/2020 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,9,10 ║ 21/01/2020 ║ 21/02/2020 ║
╠═══════════╬═══════════════╬═════════════╣
║ 2,9,10,11 ║ 21/02/2020 ║ 31/12/2042 ║
╠═══════════╬═══════════════╬═════════════╣
║ 9,10,11 ║ 31/12/2042 ║ 1/01/2100 ║
╠═══════════╬═══════════════╬═════════════╣
║ 11 ║ 1/01/2100 ║ 24/06/2100 ║
╚═══════════╩═══════════════╩═════════════╝
К сожалению, мой мозг, похоже, исчерпал свои ограничения в выяснении, как подойти к этому в SQL