Sql server 使用一个插入查询,其中一列来自另一个表

Sql server 使用一个插入查询,其中一列来自另一个表,sql-server,Sql Server,使用以下表格: 表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 有没有

使用以下表格:

表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
有没有办法使用
插入
表1
,如下所示:

INSERT INTO dbo.Table1
VALUES ('07/11/2017', '00003', 5, (? * 5))
作为
表2
00003
零售价
(即
3.00
),然后乘以
售出的
(即
5

我无意中发现了,但这需要插入的所有列都有一个来自
SELECT
的匹配值,我不需要这个值

注意:前三个值将来自外部源,因此第四个值将是唯一需要来自另一个表的值


当然,在插入之前,我可以先使用另一个查询来获取零售价格,但我避免使用这种方式来减少加载时间。

我相信您想要的是这样一个:

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

您可以将数据从外部源加载到
物理/temp/variable表中
,然后使用
insert-into-select
from子句
,该子句将在新引入的表(具有前3列)之间包含一个
join
和表2。这意味着
SELECT
中的前三个值可以是任何东西,即使是表2
中的
?这是一个混合需求,我必须说:)一定要在WHERE子句中指定您的值,以包括/排除您要插入或不想插入的条形码。@BartoszX前三列也将出现来自一组数据,而不是固定字符串。