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

基于计数字段Tsql复制行数据,tsql,sql-server-2012,Tsql,Sql Server 2012,我想根据count字段示例复制一行字段: ID | Row1 | Row2 | Row3 | count ----------------------------------------------- 1 | MR | fred | Flint | 14 因此,将ID 1行再复制13次以制作14条记录。然后将复制的每个记录的计数字段更改为1,并将原始行更改为1 我想使用CTE和row_编号可以吗?但不确定如何实现这一点。好吧,您可以使用CTE和行号,如下所示: WIT

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

 ID  | Row1  | Row2  | Row3  | count
-----------------------------------------------
 1   |  MR   | fred  | Flint |  14
因此,将ID 1行再复制13次以制作14条记录。然后将复制的每个记录的计数字段更改为1,并将原始行更改为1

我想使用CTE和row_编号可以吗?但不确定如何实现这一点。

好吧,您可以使用CTE和行号,如下所示:

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_对象的行数大于count的值。那么,您可以使用CTE和行数,如下所示:

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_对象的行数大于count的值

@SoupOfStars是的,我在不需要时留下了表别名。更新了我的答案您是否将ID设置为=1?我可能拥有任何计数超过1的id是,因为这是您的样本数据。您当然可以删除该条件。谢谢,我只需要了解一下如何更新表。@SoupOfStars是的,我在不需要时留下了表别名。更新了我的答案您是否将ID设置为=1?我可能拥有任何计数超过1的id是,因为这是您的样本数据。您当然可以删除该条件。谢谢,我只需要了解一下如何更新表。