使用SQL Server根据列中提供的范围将记录分为多行

时间:2018-08-22 00:59:58

标签: mysql sql split

我正在寻找使用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

此外,来源和预期目标数据也显示在附图中。

1 个答案:

答案 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);