基于计数字段Tsql复制行数据

时间:2017-02-08 16:37:17

标签: tsql sql-server-2012

我想根据计数字段复制一行字段示例:

 ID  | Row1  | Row2  | Row3  | count
-----------------------------------------------
 1   |  MR   | fred  | Flint |  14

因此,将ID 1行另外复制13次以制作14条记录。然后将复制的每个记录的计数字段更改为1,并将原始行更改为1.

我认为使用CTE和row_number会有效吗?但不确定如何实现。

1 个答案:

答案 0 :(得分:2)

好吧,您可以像这样使用CTEROW_NUMBER

WITH CTE AS
(
    SELECT  A.*,
            RN = ROW_NUMBER() OVER(PARTITION BY A.ID ORDER BY A.ID)
    FROM dbo.YourTable A
    CROSS JOIN sys.all_objects B
)
SELECT  ID,
        Row1,
        Row2,
        Row3,
        1 [count]
FROM CTE
WHERE RN <= [count]
AND [ID] = 1;

*免责声明:这假定sys.all_objects的行数多于count的值