0

我有 2 个 SQL Server 表发票和生产。Invoice 包含这些列(ID、ItemID、Date、AccountNo、Quantity、Type、Price、Total),Production Table 包含这些列(ItemID、Date、Quantity、Type) 我想将这两个表合并到一个表中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
4

1 回答 1

1

你想做一个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()确保键列来自第二个表。

于 2013-06-10T11:01:55.910 回答