T-SQL | 3个表,可选联接,困惑

时间:2016-06-28 10:03:15

标签: tsql join sql-server-2008-r2

我有一个orders表,列出了每个作业中删除,删除和安装的部分。

--Deleted Items on a order.
DECLARE @Deleted TABLE (ID int, Item int);

INSERT INTO @Deleted (ID, Item)
VALUES (1, 12345), (2, 12345);

-- Removed Items on a order
DECLARE @Removed TABLE (ID int, Item int);

INSERT INTO @Removed (ID, Item)
VALUES(3, 12345), (4, 67891);

--Installed items on a order
DECLARE @Installed TABLE (ID int, Item int);

INSERT INTO @Installed(ID, Item)
VALUES(1, 12345), (2, 67891), (3, 12345), (4, 12345), (4, 67891);

我需要以下结果集:

--Required Result Set

    /*

        ID  |     DEL / REM   |   Installed | Match |
        1   |     12345     |   12345       |   1   |
        2   |     12345     |   67891       |   0   |
        3   |     12345     |   12345       |   1   |
        4   |     67891     |   67891       |   1   |
        4   |     NULL      |   12345       |   0   |

    */

我对这一切的主要问题是订单4.在安装的其中一个部件上匹配,但不是第二个。所以我需要说明哪里 ID = ID 和如果可能项目=项目或者只是项目如果不匹配。

我知道备用安装项目的最大数量是两个,因此对于每个订单,最多会安装2个不同的项目编号(当前)。

我知道也可能有多个删除或删除的项目(上面没有描述)。

非常感谢任何帮助。

0 个答案:

没有答案