2011-12-14 73 views
0

加入兩個不同的列我有兩個臨時表 表1從兩個不同的表

ID1   Name  ID2   Single 
---------------------------------------------------- 
1   ABC   1   100 
2   DEF   1   200 

表2

ID1   Name  ID2   Monthly 
---------------------------------------------------- 
3   PQR   2   500 
4   LMN   2   600 

我想輸出

ID1   Name  ID2   Single Monthly 
-------------------------------------------------------- 
1   ABC   1   100  NULL 
2   DEF   1   200  NULL 
3   PQR   2   NULL  500 
4   LMN   2   NULL  600 

我使用的所有加盟什麼工作 提前致謝

+1

請在寫問題時查看預覽。對這個問題的初始格式化非常難以挑選出單獨的部分,並且表格格式不正確(他們仍然沒有,但我會盡快嘗試另一種編輯方式)。 – 2011-12-14 09:38:03

回答

2

JOIN不會爲這種情況下,您需要在這裏使用UNION

SELECT ID1, NAME, ID2, Single, NULL FROM Table1 
UNION ALL 
SELECT ID1, NAME, ID2, NULL, Monthly FROM Table2 
1

你不需要JOINS,你需要一個UNION (ALL)

UNION(的Transact-SQL)

將兩個或更多個查詢的結果到一個結果集 ,其包括屬於在工會所有查詢的所有行。 UNION操作與使用來自兩個表的列 的連接不同。

SQL語句

SELECT ID1, Name, ID2, Single, NULL as Monthly 
FROM Table1 
UNION ALL 
SELECT ID1, Name, ID2, Null, Monthly 
FROM Table2 
0

嘗試使用UNION

SELECT * FROM Single 
UNION 
SELECT * FROM Monthly 

希望提供s幫助。

+1

這與所需的輸出不匹配,因爲它只包含Single列,並且會在該列中包含每月值(並且可能會消除兩個表之間的值,因爲您已經使用了`UNION`而不是`UNION ALL`) – 2011-12-14 09:40:09

0

請使用以下查詢......

選擇 ID1, 名稱, ID2, 單, NULL作爲「每月」

從表1

聯盟

選擇 ID1, 名稱, ID2, NULL作爲「單」, 每月

從表2

2

以防萬一,一些瘋狂的原因,你真的需要它作爲一個JOIN,而不是(因爲對方的所指出的那樣)一個UNION ALL

create table #T1 (ID1 int,Name varchar(10),ID2 int,Single int) 
insert into #T1 (ID1 ,  Name ,  ID2 ,  Single) 
select 1   ,'ABC',   1 ,   100 union all 
select 2   ,'DEF',   1 ,   200 

create table #T2 (ID1 int,Name varchar(10),ID2 int,Monthly int) 
insert into #T2 (ID1 ,  Name ,  ID2 ,  Monthly) 
select 3   ,'PQR',   2 ,   500 union all 
select 4   ,'LMN',   2 ,   600 

select COALESCE(t1.ID1,t2.ID1) as ID1,COALESCE(t1.Name,t2.Name) as Name, 
COALESCE(t1.ID2,T2.ID2) as ID2,t1.Single,t2.Monthly 
from #T1 t1 full outer join #T2 t2 on 1=0 

提供您要求的結果

+0

+1這樣濫用SQL。 – 2011-12-14 13:23:14