Question

I'm trying to combine 2 tables in SQL Server

Table 1: SO

ItemCode     | SONumber| SODate     | SOQTY
-------------------------------------------
TBJ182-01-02 | 0005251 | 29/01/2014 | 5
TBJ184-01-02 | 0005251 | 29/01/2014 | 2
TBJ182-01-02 | 0005554 | 15/02/2014 | 4
TBJ185-01-02 | 0005554 | 15/02/2014 | 5

Table 2: PO

ItemCode     | PONumber| PODate     | POQTY
--------------------------------------------
TBJ182-01-02 | 0009105 | 11/02/2014 | 8
TBJ184-01-02 | 0009208 | 14/02/2014 | 5
TBJ189-01-02 | 0009208 | 14/02/2014 | 5

Result table:

ItemCode     | SONumber| SODate    | SOQTY | PONmber |PODate      | POQTY
-------------------------------------------------------------------------
TBJ182-01-02 | 0005251 | 29/01/2014| 5     |         |            |
TBJ184-01-02 | 0005251 | 29/01/2014| 2     |         |            |
TBJ182-01-02 | 0005554 | 15/02/2014| 4     |         |            |
TBJ185-01-02 | 0005554 | 15/02/2014| 5     |         |            |
TBJ182-01-02 |         |           |       | 0009105 | 11/02/2014 | 8
TBJ184-01-02 |         |           |       | 0009208 | 14/02/2014 | 5
TBJ189-01-02 |         |           |       | 0009208 | 14/02/2014 | 5

Could you help?

Was it helpful?

Solution

You can do this most easily with a full outer join and a little trick:

select coalesce(SO.ItemCode, PO.ItemCode) as ItemCode,
       SO.SONumber, SO.SODate, SO.SOQTY,
       PO.PONmber, PO.PODate, PO.POQTY
from SO full outer join
     PO
     on 1 = 0;

OTHER TIPS

Nothing more i have modified removed outer and ISNULL in place of coalesce

DECLARE @Tbl TABLE (


     ITEMCode VARCHAR(100),
        SONUMBER VARCHAR(100), 
        SoQTY INT
    )

    INSERT INTO @Tbl VALUES ('TBJ182-01-02','0005251',1)
    INSERT INTO @Tbl VALUES ('TBJ184-01-02', '0005251', 2)
    INSERT INTO @Tbl VALUES ('TBJ182-01-02', '0005554',4)
    INSERT INTO @Tbl VALUES ('TBJ182-01-02', '0005554',6)

    DECLARE @Tbl1 TABLE (
        ITEMCode VARCHAR(100),
        PONUMBER VARCHAR(100), 
        POQTY INT
    )

    INSERT INTO @Tbl1 VALUES ('TBJ182-01-02','0005251',1)
    INSERT INTO @Tbl1 VALUES ('TBJ184-01-02', '0005251', 2)
    INSERT INTO @Tbl1 VALUES ('TBJ182-01-02', '0005554',4)
    INSERT INTO @Tbl1 VALUES ('TBJ182-01-02', '0005554',6)
    select ISNULL(t.ITEMCode,tt.ITEMCode),t.SONUMBER,t.SoQTY,tt.PONUMBER,tt.POQTY from @Tbl t
    FULL JOIN @Tbl1 tt
    ON 1 = 0
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top