【问题标题】:Copying Row data based on count field Tsql基于计数字段Sql复制行数据
【发布时间】:2017-02-09 00:52:25
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: tsql sql-server-2012


    【解决方案1】:

    好吧,您可以像这样使用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 的值多

    【讨论】:

    • @SoupOfStars 是的,我在不需要时留下了表别名。更新了我的答案
    • 您是否将 ID 设置为 =1 ?我可能有任何计数超过 1 的 id
    • 是的,因为那是您的示例数据。您当然可以删除该条件
    • 已经完成谢谢,我只需要一些如何更新表格。
    猜你喜欢
    • 2015-09-24
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多