我正在寻找使用sql server根据列中提供的范围将记录拆分为多行的方法。请提供帮助。
样本源数据设置如下-
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
此外,来源和预期目标数据也显示在附图中。
答案 0 :(得分:0)
您需要一个类似数字的表格来拆分数据。您可以自己构建一个:
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);