SQL server insert multiple rows using an inner join

Jonathan Brotto 286 Reputation points
2020-11-25T19:46:09.727+00:00

SQL server insert multiple rows using an inner join would be possible.

-- Insert into line will select the columns.
-- Values is the values you need to add the file
-- where clause is the variables for the range

INSERT INTO WTr1 (T1.DocEntry, T1.ItemCode, T1.Dscription, T1.Quantity)
Values ('624262301875', 'Console 5.99', '30') 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price] 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

INSERT INTO WTR1 (T1.ItemCode, T1.Dscription, T1.Quantity)
VALUES ('624262301882', 'Console 9.99', '25')
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price] 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

INSERT INTO T1 (T1.ItemCode, T1.Dscription, T1.Quantity)
VALUES ('624262301899', 'Console 19.99', '15') 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price] 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

INSERT INTO T1 (T1.ItemCode, T1.Dscription, T1.Quantity)
VALUES ('624262302056', '80 Stand-Up Displayer', '1') 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'

SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price] 
FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'
Developer technologies Transact-SQL
0 comments No comments
{count} vote

Accepted answer
  1. Jonathan Brotto 286 Reputation points
    2020-11-25T20:33:06.18+00:00

    I modified what you wrote and it works

    INSERT INTO WTr1 (LineNum, DocEntry, ItemCode, Dscription, WhsCode, Quantity, U_ClientDesc)
    select MAX(T1.LineNum)+1, T1.DocEntry, '624262301875', 'Console 5.99', 'CONS', '30', 'Console 5.99'
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'
    Group By T1.DocEntry

    SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price]
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'

    INSERT INTO WTr1 (LineNum, DocEntry, ItemCode, Dscription, WhsCode, Quantity)
    select MAX(T1.LineNum)+1, T1.DocEntry, '624262301882', 'Console 9.99', 'CONS', '25'
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'
    Group By T1.DocEntry

    SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price]
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'

    INSERT INTO WTr1 (LineNum, DocEntry, ItemCode, Dscription, WhsCode, Quantity)
    select MAX(T1.LineNum)+1, T1.DocEntry, '624262301899', 'Console 19.99', 'CONS', '15'
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'
    Group By T1.DocEntry

    SELECT T0.[DocNum], T0.[DocDate], T0.[CardCode], T0.[CardName], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[Price]
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'

    INSERT INTO WTr1 (LineNum, DocEntry, ItemCode, Dscription, WhsCode, Quantity)
    select MAX(T1.LineNum)+1, T1.DocEntry, '624262302056', '80 Stand-Up Displayer', 'CONS', '1'
    FROM OWTR T0 INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry
    WHERE T0.[DocNum] >= '914141' AND T0.[DocNum] <= '914201'
    Group By T1.DocEntry


2 additional answers

Sort by: Most helpful
  1. Viorel 122.5K Reputation points
    2020-11-25T20:06:31.017+00:00

    Maybe you need something like this:

    INSERT INTO WTr1 (DocEntry, ItemCode, Dscription, Quantity)
    select T1.DocEntry, T1.ItemCode, T1.Dscription, T1.Quantity
    FROM OWTR T0  INNER JOIN WTR1 T1 ON T0.DocEntry = T1.DocEntry 
    WHERE T0.[DocNum] >= '914141' AND  T0.[DocNum] <= '914201'
    
    2 people found this answer helpful.

  2. Kitthana Khammool 0 Reputation points
    2023-10-02T04:30:53.1633333+00:00

    I what format do I need Insert 3 table sql?

    T1animals(AnimalsID, Animals, IUCN_Red_List, TypesID, BloodedID)
    T2types(TypesID,Types)
    T3blooded(BloodedID,Blooded)

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.