我是SQL Server新手。我正在尝试创建测试数据。
我有一个包含10,000个部件号(Table1)的表。
我有另一个包含仓库的表(Table2)。
我有第三个表(Table3),它将为每个部件号/仓库组合包含一行。
Table1将包含部件号,Table2将包含6个仓库,表3将为每个部件号/仓库占一行。这意味着我在Table3中将有60,000行数据。我已经看过了所有的连接,但似乎找不到一个可以做这项工作的。我想要做的是在一个名为On_Hand的列中使用起始值为100的所有零件号/仓库行加载Table3。谢谢你的帮助。
发布于 2018-03-23 01:28:30
INSERT INTO TABLE_3 ( Part_No, Location)
SELECT Part_No, Location from InventoryTable CROSS JOIN LocationTable WHERE
order by Part_No发布于 2018-03-23 01:38:00
生成一些数据:
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发布于 2018-03-23 02:37:33
您需要使用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_2https://stackoverflow.com/questions/49434522
复制相似问题