将2个SQL Server表合并为一个表
本文关键字:一个 合并 2个 SQL Server | 更新日期: 2023-09-27 18:17:54
我有2个SQL Server表发票和生产。发票包含这些列(ID、ItemID、日期、AccountNo、数量、类型、价格、总额),生产表包含这些列(ItemID、日期、数量、类型)我想把这两个表合并成一个表,其中ItemID、Date和Quantity是通用的。像生产日期要在发票数据之后查看,以后我按日期排序。非通用字段可以有一个NULL值)与下面的示例相同…
怎么做?
ID ItemID Date AccountNo Quantity Type Price Total
------------------------------------------------------------------------------------------
1 4 2013-06-10 123456 10 Invoice 5.00 50.00
2 7 2013-06-10 456789 15 Invoice 3.00 45.00
NULL 4 2013-06-05 NULL 40 Production NULL NULL
你想做一个full outer join
:
select i.ID,
coalesce(i.ItemID, p.ItemId) as ItemId,
coalesce(i.Date, p.Date) as Date,
i.AccountNo,
coalesce(i.Quantity, p.Quantity) as Quantity,
p.Type, i.Price
from Invoice i full outer join
Production p
on i.ItemID = p.ItemId and
i.Date = p.Date and
i.Quantity = p.Quantity
当第二个表在第一个表中没有匹配时,coalesce()
确保键列来自第二个表。