Вставка нескольких строк из 2 таблиц в 1 таблицу с помощью PrimaryKey - PullRequest
0 голосов
/ 13 июня 2018

У меня есть 4 таблицы,

Заголовок таблицы A и детали A в качестве мастера

Заголовок таблицы C и детали C в виде транзакции

, например:

Table A Header
|Aid | Desc | UnitCost
|1   | Ts   | 1400

Table A Detail
Aid |BID  | Qty | UnitCost
1   |1    | 12  | 200
1   |2    | 21  | 300
1   |3    | 33  | 400

затем я получил процесс вставки для таблицы C как транзакцию, включив детали:

Table C header
CID |Desc
1   |Payment Transaction

транзакцию детали следующим образом:

Я хочу вставить таблицуЗаголовок и таблица A Detail в таблицу c detail (Как получить это?)

Table C detail
CID |BID  | Qty | UnitCost
1   |1    |  1  | 1400
1   |1    | 12  | 0
1   |2    | 21  | 0
1   |3    | 33  | 0

Я уже создал процесс вставки, подобный этому (ниже), но он выдает мне ошибку.

и я хочу сделать unitcost = 0 для таблицы A Detail.

INSERT INTO TableCHeader (CID, Desc) VALUES (1, 'Payment Transactions')

-- insert table A header first
INSERT INTO TableCDetail (CID, BID, Qty, UnitCost)
VALUES (1, (SELECT AID, 1, UnitCost FROM TableAHeader WHERE AID = 1))

-- then, insert table A details
INSERT INTO TableCDetail (CID, BID, Qty, UnitCost)
VALUES (1, (SELECT BID, Qty, UnitCost FROM TableADetail WHERE AID = 1))

есть ли в любом случае, я могу получить результат?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Ответ будет таким:

;WITH Table_A_Header AS
(
    SELECT 1  Aid , 'Ts' AS [Desc], 1400 AS UnitCost
)
,Table_A_Detail AS
(
    SELECT 1 AS Aid,1 AS BID,12 AS Qty,200 AS UnitCost
    UNION ALL
    SELECT 1,2,21,300
    UNION ALL
    SELECT 1,3,33,400
)
--INSERT INTO TableCDetail (CID, BID, Qty, UnitCost)
SELECT 
    CID=1,
    BID=AID,
    QTY=1, 
    UnitCost 
FROM Table_A_Header WHERE AID = 1
UNION ALL
SELECT
    CID=1,
    BID, 
    Qty, 
    UnitCost=0
FROM Table_A_Detail WHERE AID = 1
0 голосов
/ 13 июня 2018

Ваша последняя часть должна быть как

-- insert table A header first
INSERT INTO TableCDetail (CID, BID, Qty, UnitCost)
SELECT 
    CID=1,
    BID=AID,
    QTY=1, 
    UnitCost 
FROM TableAHeader WHERE AID = 1

-- then, insert table A details
INSERT INTO TableCDetail (CID, BID, Qty, UnitCost)
SELECT
    CID=1,
    BID, 
    Qty, 
    UnitCost=0
FROM TableADetail WHERE AID = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...