0

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

例如:

表A

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

我想创建一个序列号介于SerialNoEnd和之间的新表SerialNoStart

新表如下:

TableB

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

怎么做?谢谢!

4

1 回答 1

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

于 2013-01-30T16:22:56.700 回答