我是一名SQL Server新手。我正在尝试创建测试数据。
我有一个包含10,000个零件号的表(表1)。
我有另一个包含仓库的表(表2)。
我有第三个表(表3),每个零件编号/仓库组合都包含一行。
表1将包含部件号,表2将包含6个仓库,表3将包含每个部件号/仓库的行。这意味着我将在Table3中以60,000行结束。我查看了所有的JOIN,但似乎无法找到一个完成工作的人。我想要做的是在名为On_Hand的列中加载Table3,其中包含起始值为100的所有部件号/仓库行。谢谢你的帮助。
答案 0 :(得分:1)
INSERT INTO TABLE_3 ( Part_No, Location)
SELECT Part_No, Location from InventoryTable CROSS JOIN LocationTable WHERE
order by Part_No
答案 1 :(得分:0)
生成一些数据:
DECLARE @partNumbers TABLE
(
PartNumber INT
)
DECLARE @warehouses TABLE
(
Warehouse VARCHAR(20)
)
DECLARE @partNumberStart INT = 100
-- partnumbers 10000 starting at @partNumberStart -- for testing.
INSERT INTO @partNumbers
SELECT @partNumberStart + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID FROM
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) x1(x),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) x2(x),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) x3(x),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) x4(x)
--Warehouses 6 generated for testing
INSERT INTO @warehouses
SELECT x1.x + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VARCHAR(20)) AS ID FROM
(VALUES('Warehouse ')) x1(x),
(VALUES(0),(1),(2),(3),(4),(5)) x2(x) --6
--(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) x2(x), --10
查询数据:
SELECT * FROM @warehouses LEFT JOIN @partNumbers on 1=1
--OR
SELECT * FROM @warehouses CROSS JOIN @partNumbers
--OR
SELECT * FROM @warehouses, @partNumbers
答案 2 :(得分:0)
你想cross join
,像这样使用:
insert into inventory (part_no, warehouse_id, on_hand) -- table_3
select p.Part_No, w.warehouse_id, 500
from Parts it cross join -- table_1
Warehouses w; -- table_2