Sql server 使用一个插入查询,其中一列来自另一个表
使用以下表格: 表1Sql 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 有没有
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前三列也将出现来自一组数据,而不是固定字符串。