2017-08-02 73 views
1

這些表的INSERT查詢:使用一列來自另一個表

表1

Date | Barcode | Sold | AmountSold 

表2

Barcode | Description | RetailPrice 
00001  Item1   1.00 
00002  Item2   2.00 
00003  Item3   3.00 
00004  Item4   4.00 
00005  Item5   5.00 

是否有使用INSERT方式到Table1,像這樣:

INSERT INTO dbo.Table1 
VALUES ('07/11/2017', '00003', 5, (? * 5)) 

隨着?作爲RetailPrice(這是3.00)的00003Table2,然後用Sold(這是5乘以?

我偶然發現了INSERT INTO SELECT,但是這要求所有將被插入的列將有一個從SELECT的匹配值,我不需要它。

注:前三值將來自外部來源,因此第4個值將是需要來自另一個表

我當然可以先用另一個查詢的唯一一個插入前獲得RetailPrice,但我避免使用這種方式來減少加載時間。

+0

你可以從外部源的數據加載到'物理/溫度/可變table'然後用'插入選擇'帶'from子句',其中包含新引入的表(前3列)和table2之間的'join'。 –

回答

1
INSERT INTO dbo.table1 
    VALUES ('07/11/2017', '00003', 5, ((SELECT RetailPrice 
               FROM dbo.table2 
               WHERE dbo.table2.Barcode = '00003') * 5)) 
2

我相信你是像在這之後一個:

INSERT INTO dbo.Table1 (Date, Barcode , Sold , AmountSold) 
SELECT '07/11/2017', '00003', 5, 5 * RetailPrice 
FROM Table2 
-- WHERE Barcode = 'XXX' 
+0

那麼這意味着'SELECT'中的前三個值可以是任何東西,即使是'FROM Table2'也是如此? – Swellar

+0

這是我必須說的需求的混合:)做到這一點,你必須在WHERE子句中指定你的值來包含/排除你想插入或者你不插入的條形碼。 –

+0

@BartoszX前三列也是來自一組數據,而不是固定的字符串。 –

相關問題