sql - 根据不同列中的计数重复行 - 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
我的代码缺少了一些不能产生预期结果的东西。有什么帮助吗?!
解决方案
您需要一个达到 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
推荐阅读
- javascript - 如何使用点符号将 JSON 转换为键列表
- docker - 如何在 kubenetes 中从我的容器挂载卷
- php - 谷歌图表 y 轴以奇怪的顺序排列
- docker - 如何在 AWS ECS 中管理 docker 镜像的版本?
- django - django 表单无效但验证不起作用
- c# - 如何使列表属性在对象初始化程序中可写但在其他地方只读?
- html - 使用 XSLT 以字符串替换形式对 HTML 文档应用编辑
- android - 将文件上传到 Android 中的 Firebase 云存储后,我无法获取下载 URL
- python - 为什么我不能使用别名导入?例如:`from tf import keras`
- python - 我的 Jupyter 笔记本显示错误“连接到内核”。我不知道该怎么办?