如何使用SQL Server中另一个表计算的列创建表?

时间:2013-01-30 16:14:03

标签: sql-server-2008 tsql

如何使用SQL Server中另一个表计算的列创建表?

例如:

表A

    Name   SerialNoStart  SerialNoEnd
    A        1              3
    B        2              4
    C        1              1

我想创建一个序列号介于SerialNoEndSerialNoStart

之间的新表格

新表格如下:

TableB

   Name    SerialNo
   A          1
   A          2
   A          3
   B          2
   B          3
   B          4
   C          1

如何制作?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用递归CTE分割数据,类似于:

;with data(name, SerialNoStart, SerialNoEnd) as
(
    select name, SerialNoStart, SerialNoEnd
    from TableA
    union all
    select name, SerialNoStart +1, SerialNoEnd
    from data
    where SerialNoStart +1 <= SerialNoEnd
)
select name, SerialNoStart as SerialNo
from data
order by name

请参阅SQL Fiddle with Demo