我必须从列的值插入表。 我的桌子是
row_ID ID Code units status
1 AAA PPP 5 Deny
2 BBB ZZZ 10 Deny
3 FFF MMM 7 Deny
4 SSS YYY 3 Deny
现在我必须遍历单位值并多次插入表格。我的第一个单位值是5,所以我的目标表应该是第一个记录和最后一个记录 我的表应该看起来像
ID Code Units Status
AAA PPP 1 Deny
AAA PPP 1 Deny
AAA PPP 1 Deny
AAA PPP 1 Deny
AAA PPP 1 Deny
SSS YYY 1 Deny
SSS YYY 1 Deny
SSS YYY 1 Deny
对于第二和第三个ID,我的目标表应该有10行和7行。
我正在尝试将Units值分配给变量,但它表示子查询返回的值超过1。
declare @loopcounter int,@maxunits int
select @loopcounter=1
select @maxunits =(select max(units ) from #unit roup by ID, code)
任何人都可以帮我吗?
答案 0 :(得分:0)
如果你的数量少于100,那就去做一个递归的CTE:
with cte as (
select u.row_ID, u.ID, u.Code, u.units, u.status, 1 as n
from #unit u
union all
select row_ID, ID, Code, units, status, n + 1
from cte
where n < u.units
)
select row_ID, ID, Code, units, status
from cte;
递归CTE可用于100多个单位,但您需要使用OPTION (MAXRECURSION 0)
。