合并两个SQL表

时间:2014-07-01 19:05:29

标签: sql sql-server

我有一个名为Store Sales的表,其中包含以下列

Date
Total Qty Sold
RRP
Total Value Sold
Branch No.
Barcodes
Unit Cost

然后我有另一个名为ESales的表,其中包含此

Inv Date
Our Ship Qty
Unit Price (RRP Inc VAT)
Line Total
Invoice
Order
Line
Brand
Part
Description
Our Order Qty
Unit Price (Exc VAT)
Discount %
Discount Amt (Inc VAT)
Discount Amount (Exc VAT)
Tax Category
Tax Exempt
Group
Sales Cat
Cust. ID
Title
Customer
Name
Tax ID
Rep. ID
Credit Memo
Unit Price
Amount
Category ID
Cust. Amount
Number01
ShortChar01
ShortChar02
Clubcard

有匹配的字段,但没有相同的名称。他们是

Inv Date = Date
Our Ship Qty = Total Qty Sold
Unit Price (RRP Inc VAT) = RRP
Line Total = Total Value Sold

我想将StoreSales中的值合并到ESales,并为不存在的数据创建其他列,这些是

Branch No
Barcodes
Unit Cost

如何插入匹配值并创建三个新值?

1 个答案:

答案 0 :(得分:1)

我不是创建一个新表,而是从一个查询开始,向您显示您描述的所有数据。将多个表中的数据合并在一起的方法是使用JOIN命令。下面是一个示例查询,显示ESales表中的所有内容以及您描述的StoreSales表中的其他列:

SELECT e.*, s.[Branch No], s.[Barcodes], s.[Unit Cost] 
FROM StoreSales s
INNER JOIN ESales e ON 
e.[Inv Date] = s.[Date] AND 
e.[Our Ship Qty] = s.[Total Qty Sold] AND 
e.[Unit Price (RRP Inc VAT)] = s.[RRP] AND 
e.[Line Total] = s.[Total Value Sold]

获得自己喜欢的查询后,可以将其保存为VIEW,这实际上可以让您与此查询的结果进行交互,就好像它是一个单独的表一样。

我会提醒你,你必须非常小心这样做。通常,数据将具有某种常见字段,如订单ID或产品SKU,这使得您非常清楚您在数据库中引用的唯一项目。加入日期,订单总数,价格等等是不好的做法。这是因为没有办法保证没有两个订单具有相同的日期或相同的订单总数。这些东西并不是任何一个特定订单所独有的。