2017-08-02 75 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前三列也是来自一组数据,而不是固定的字符串。 –

相关问题