首页 > 解决方案 > 根据不同列中的计数重复行 - SQL

问题描述

我有一个包含 ID 和计数的表。我想重复计数中提到的次数。

我的桌子:

在此处输入图像描述

期望的输出:

在此处输入图像描述

我的代码:

    create table #temp1(CID int, CVID int, count int)
    insert #temp1
    values
    (9906,  4687,   4),
    (9906,  4693,   5)

    create table #temp2 (CID int,CVID int, count int,ro int)

    ;with t3 as (
    select c.CID,c.CVID, c.count, row_number() over (partition by c.CID order by c.CID) ro 
    from #temp1 c
    )
    insert #temp2 
    select CID,CVID,count,ro from t3 where ro <= count

我的代码缺少了一些不能产生预期结果的东西。有什么帮助吗?!

标签: sqlsql-server

解决方案


您需要一个达到 count 列最大值的数字表,然后可以使用它来生成多行。这个数字生成可以使用递归 cte 来完成。

--Recursive CTE
with nums(n) as (select max(count) from #temp1
                 union all
                 select n-1 
                 from nums 
                 where n > 1
                )
--Query to generate multiple rows
select t.*,nums.n as ro
from #temp1 t
join nums on nums.n <= t.count

推荐阅读