我有一個像這樣的表 A:
| 單品 | 價值 |
|---|---|
| 第一的 | 5 |
| 第二 | 3 |
我想根據表 A 中的記錄將記錄添加到表 B。表 B 應如下所示:
| 單品 | 數字 |
|---|---|
| 第一的 | 1 |
| 第一的 | 2 |
| 第一的 | 3 |
| 第一的 | 4 |
| 第一的 | 5 |
| 第二 | 1 |
| 第二 | 2 |
| 第二 | 3 |
如何使用 SQLINSERT INTO陳述句執行此操作?
uj5u.com熱心網友回復:
您可以使用遞回 CTE 來擴展行。例如:
with
r as (
select sku, value, 1 as cur from a
union all
select sku, value, cur 1 from r where cur < value
)
insert into b (sku, n) select sku, cur from r;
結果:
sku n
------- -
First 1
Second 1
Second 2
Second 3
First 2
First 3
First 4
First 5
請參閱db<>fiddle 上的運行示例。
uj5u.com熱心網友回復:
您需要一個包含所有 number_list 的表并加入:
select sku, number_list
from (
select 1 as number_list
union all
select 2 as number_list
union all
select 3 as number_list
union all
select 4 as number_list
union all
select 5 as number_list
union all
select 6 as number_list
union all
select 7 as number_list
union all
select 8 as number_list
union all
select 9 as number_list
union all
select 10 as number_list
)nb
join (
select 'First' as sku, 5 as val
union
all
select 'Second' as sku, 3 as val
)sk
on nb.number_list <= sk.val
order by sku, number_list asc
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389556.html
標籤:sql sql-server
