Я ищу Split записей в несколько строк на основе диапазона, предоставляемого в столбце с использованием SQL-сервера. Пожалуйста, помогите.
Пример источника данных, указанный ниже:
account_no range
abc_111 2001…2010
Ожидаемые целевые данные, указанные ниже:
account_no range
abc_111 2001
abc_111 2002
abc_111 2003
abc_111 2004
abc_111 2005
abc_111 2006
abc_111 2007
abc_111 2008
abc_111 2009
abc_111 2010
Также источники и ожидаемые целевые данные показаны на прилагаемом рисунке.
Для разделения данных вам нужна таблица чисел. Вы можете сами создать его:
select sd.account_no, substring_index(range, '...', 1) + n.n - 1
from sourcedata sd join
(select 1 as n union all
select 2 union all
. . .
select 10
) n
on n.n >= 1 and
n.n <= substring_index(range, '...', -1) - substring_index(range, '...', 1);