0

I'm working with SQL 2008 R2 and have a need to find a specific row in a table that has three fields and then insert multiple rows into the same table with each insert using two values from the found row but the third value is a variable that is different on each insert. Can this be done? Here is a non-functioning SQL statement that, I hope, shows what I am trying to do:

INSERT INTO Routings_Doors_Options
 (HeaderID, Option2, Option1) 
VALUES (Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA1'), 
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA2'), 
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA3'),
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA4'),
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA6'), 
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA7'),
(Routings_Doors_Options_1.HeaderID, Routings_Doors_Options_1.Option2, 'OGGA8')
SELECT HeaderID, Option2
FROM Routings_Doors_Options AS Routings_Doors_Options_1
WHERE (Option1 = 'OGGA')
Hannah Vernon
71.1k22 gold badges178 silver badges323 bronze badges
asked Apr 18, 2019 at 16:57

1 Answer 1

0

You'll need to create a temporary table with the new variables, then cross apply them to the existing row.

I've set up an MCVE 1:

CREATE TABLE dbo.rdo
(
 HeaderID int NOT NULL
 , Option2 varchar(10) NOT NULL
 , Option1 varchar(10) NOT NULL
);
INSERT INTO dbo.rdo (HeaderID, Option2, Option1)
VALUES (1, 'test', 'OGGA')

This code will insert the extra 8 variables into the table:

CREATE TABLE #variables
(
 Option1 varchar(10) NOT NULL
);
INSERT INTO #variables (Option1)
VALUES ('OGGA1')
 , ('OGGA2')
 , ('OGGA3')
 , ('OGGA4')
 , ('OGGA5')
 , ('OGGA6')
 , ('OGGA7')
 , ('OGGA8');
INSERT INTO dbo.rdo (HeaderID, Option2, Option1)
SELECT r.HeaderID
 , r.Option2
 , v.Option1
FROM dbo.rdo r
 CROSS APPLY #variables v
WHERE r.Option1 = 'OGGA';

This shows the table after the 8 rows have been added:

SELECT *
FROM dbo.rdo r

Results:

╔══════════╦═════════╦═════════╗
║ HeaderID ║ Option2 ║ Option1 ║
╠══════════╬═════════╬═════════╣
║ 1 ║ test ║ OGGA ║
║ 1 ║ test ║ OGGA1 ║
║ 1 ║ test ║ OGGA2 ║
║ 1 ║ test ║ OGGA3 ║
║ 1 ║ test ║ OGGA4 ║
║ 1 ║ test ║ OGGA5 ║
║ 1 ║ test ║ OGGA6 ║
║ 1 ║ test ║ OGGA7 ║
║ 1 ║ test ║ OGGA8 ║
╚══════════╩═════════╩═════════╝

1 - I own the referenced website

answered Apr 18, 2019 at 17:12

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.