我想將3個表合併爲一個。我正在使用SQL Server 2005.我嘗試了FULL OUTER JOIN
,但在結果中得到了重複的ID。所以你的幫助非常感謝。組合不同表中的列(SQL Server)
+---------------+ +---------------+ +---------------+
| ID COL_A | | ID COL_B | | ID COL_C |
+---------------+ +---------------+ +---------------+
| a 2 | | b 1 | | a 1 |
| c 1 | | c 1 | | d 1 |
+---------------+ +---------------+ +---------------+
結果:
+---------------------------+
| ID COL_A COL_B COL_C |
+---------------------------+
| a 2 NULL 1 |
| b NULL 1 NULL |
| c 1 1 NULL |
| d NULL NULL 1 |
+---------------------------+
每個表具有數據的不同的行。
這裏的代碼創建表:
declare @a table (
ID char(1),
COL_A int
)
declare @b table (
ID char(1),
COL_B int
)
declare @c table (
ID char(1),
COL_C int
)
insert into @a values ('a', 2)
insert into @a values ('c', 1)
insert into @b values ('b', 1)
insert into @b values ('c', 1)
insert into @c values ('a', 1)
insert into @c values ('d', 1)
select * from @a
select * from @b
select * from @c
謝謝!
@Francis富爾特,我完全連接查詢看起來是這樣的:
SELECT COALESCE(c.ID,a.ID,b.ID) AS ID
,a.COL_A
,b.COL_B
,c.COL_C
FROM @c c
FULL OUTER JOIN @a a ON c.ID=a.ID
FULL OUTER JOIN @b b ON c.ID=b.ID
ORDER BY ID
@Nithesh,如果表的順序被連接的變化,結果也發生了變化。
SELECT ISNULL(ISNULL(a.ID,b.ID),c.ID) AS ID
,a.COL_A
,b.COL_B
,c.COL_C
FROM @a a
FULL OUTER JOIN @b b ON a.ID=b.ID
FULL OUTER JOIN @c c ON a.ID=c.ID
ORDER BY ID
SELECT ISNULL(ISNULL(b.ID,a.ID),c.ID) AS ID
,a.COL_A
,b.COL_B
,c.COL_C
FROM @b b
FULL OUTER JOIN @a a ON b.ID=a.ID
FULL OUTER JOIN @c c ON b.ID=c.ID
ORDER BY ID
SELECT ISNULL(ISNULL(c.ID,b.ID),a.ID) AS ID
,a.COL_A
,b.COL_B
,c.COL_C
FROM @c c
FULL OUTER JOIN @b b ON c.ID=b.ID
FULL OUTER JOIN @a a ON c.ID=a.ID
ORDER BY ID
結果:(對不起,沒有足夠的信譽發表圖片)
+---------------------------+
| ID COL_A COL_B COL_C |
+---------------------------+
| a 2 NULL 1 |
| b NULL 1 NULL |
| c 1 1 NULL |
| d NULL NULL 1 |
+---------------------------+
+---------------------------+
| ID COL_A COL_B COL_C |
+---------------------------+
| a 2 NULL NULL |
| a NULL NULL 1 |
| b NULL 1 NULL |
| c 1 1 NULL |
| d NULL NULL 1 |
+---------------------------+
+---------------------------+
| ID COL_A COL_B COL_C |
+---------------------------+
| a 2 NULL 1 |
| b NULL 1 NULL |
| c NULL 1 NULL |
| c 1 NULL NULL |
| d NULL NULL 1 |
+---------------------------+
我真的需要與GROUPBY子句添加一個額外層,以避免重複?
? –
@Francis Fuerte,當然,我將我的查詢添加到原始文章。 – myleslee