如何将计数器值设置为列值

时间:2017-07-13 20:11:04

标签: sql sql-server-2012

我必须从列的值插入表。 我的桌子是

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)

任何人都可以帮我吗?

1 个答案:

答案 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)