T-SQL。如何创建一个包含值序列的表

时间:2017-09-27 12:22:35

标签: tsql

我有一个包含名单和索引列表的表。例如:

ID |   Name  | Index
1  | Value 1 | 3 
2  | Value 2 | 4 
     ...
N  | Value N | NN

我需要创建一个新表,其中来自字段" Name"将重复多次重复"索引"字段已指定。例如:

ID |  Name_2 | ID_2
1  | Value 1 | 1
2  | Value 1 | 2
3  | Value 1 | 3 
4  | Value 2 | 1 
5  | Value 2 | 2 
6  | Value 2 | 3 
7  | Value 2 | 4 
     ...
N  | Value N | 1
N+1| Value N | 2
    ...

我不知道如何写一个循环来获得这样的结果。请给我一个建议。

1 个答案:

答案 0 :(得分:0)

以下是基于列值重复行的解决方案

declare @order table ( Id int, name varchar(20), indx int)
Insert into @order
(Id, name, indx)
VALUES
(1,'Value1',3),
(2,'Value2',4),
(3,'Value3',2)

;WITH cte AS
(
SELECT * FROM @order

UNION ALL

SELECT cte.[ID], cte.name, (cte.indx - 1) indx
FROM cte INNER JOIN @order t
  ON cte.[ID] = t.[ID]
WHERE cte.indx > 1
)
SELECT  ROW_NUMBER() OVER(ORDER BY name ASC) AS Id, name as [name_2], 1 as [Id_2]
FROM cte
ORDER BY 1