sql 服务器 - MSSQL 根据“NoOfRows”字段中的数字将 n 行数插入到另一个表中



我将如何根据NoOfRows字段将n行数插入到另一个表(B)中。

Table A Source Table
    ID  | NoOfRows 
    ---------
    1   |    3
    2   |    2
Table B Created/Destination table
    ID  | enabled
    ---------
    1   |    true
    1   |    true
    1   |    true
    2   |    true
    2   |    true

启用只是一个将始终设置为 true 的字段

一种方法使用数字表。 这里有一种方法是有效的,除非你的计数非常高:

with n as (
      select row_number() over (order by (select null)) as n
      from master..spt_values
     )
select id, 1 as enabled
from a join
     n
     on n.n <= a.count;

如果环境中有其他序列号源,则可以使用该源。

另外,我使用"1"表示"真";SQL Server 没有布尔类型。

INSERT INTO TableA (ID , [Count])
SELECT ID , COUNT(*) 
FROM TableB
WHERE [enabled] = 'true'
GROUP BY ID 

最新更新