gpt4 book ai didi

sql-server - 根据列中的值展开行结果(使用迭代器)

转载 作者:行者123 更新时间:2023-12-01 04:09:44 28 4
gpt4 key购买 nike

在编写此查询时需要大家的帮助。运行 SQL 2005 标准版。

我有一个基本查询,它从 record_Count 大于 1 的表中获取记录的子集。

SELECT * 
FROM Table_Records
WHERE Record_Count > 1

这个查询给了我一个结果集,比如:
TableRecords_ID       Record_Desc               Record_Count
123 XYZ 3
456 PQR 2

需要修改上面的查询,以便每条记录出现的次数与 Record_Count 一样多,并且带有它的迭代次数,作为一个值。所以新查询应该返回如下结果:
   TableRecords_ID   Record_Desc          Record_Count            Rec_Iteration
123 XYZ 3 1
123 XYZ 3 2
123 XYZ 3 3
456 PQR 2 1
456 PQR 2 2

谁能帮我们写下这个查询?感谢您的帮助。

说明:Rec_Iteration 列是 Record_Count 的子表示。基本上,由于 XYZ 描述有三个 Record_Count,因此返回了三行,其中 Rec_Iteration 分别代表第一行、第二行和第三行。

最佳答案

您可以为此查询使用 recursive CTE。下面我使用一个表变量 @T 而不是你的表 Table_Records

declare @T table(TableRecords_ID int,Record_Desc varchar(3), Record_Count int)

insert into @T
select 123, 'XYZ', 3 union all
select 456, 'PQR', 2

;with cte as
(
select TableRecords_ID,
Record_Desc,
Record_Count,
1 as Rec_Iteration
from @T
where Record_Count > 1
union all
select TableRecords_ID,
Record_Desc,
Record_Count,
Rec_Iteration + 1
from cte
where Rec_Iteration < Record_Count
)
select TableRecords_ID,
Record_Desc,
Record_Count,
Rec_Iteration
from cte
order by TableRecords_ID,
Rec_Iteration

关于sql-server - 根据列中的值展开行结果(使用迭代器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com