2010-04-21 34 views
3

我有兩個來自不同表格的查詢結果,如下所示。如何使用SQL在具有可變數量字段的兩個數據集之間進行聯合?

ID F1 F2 F3 ID F3 F4 F5
S1 D11 D12 D13 S2 D23 D24 D25
S2 D21 D22 D23 S3 D33 D34 D35
S3 D31 D32 D33 S4 D43 D44 D45

ID和F#是字段名稱,其他是值。我想從上面的結果中以類似的形式得到一個新的結果。

ID F1 F2 F3 F4 F5
S1 D11 D12 D13
S2 D21 D22 D23
S2 D23 D24 D25
S3 D31 D32 D33
S3 D33 D34 D35
S4 D43 D44 D45

這是可能性在SQL中?我正在用ADO編程VBA。我從來沒有做過這樣的任務。

請注意,前兩個表格的字段是動態的。我無法預測有多少人或他們是什麼。

+0

Oh no。似乎人們不再打開這個線程。問題仍然存在。 :( – phoenies 2010-04-21 15:46:15

+0

要耐心等待,這只是一個小時,而且:如果你沒有得到你想要的答案,試着通過更清楚地解釋你需要的東西來改善問題,這可以幫助任何人(你自己或他人)找到一個解決方案 – 2010-04-21 16:29:19

回答

7
select ID, F1, F2, F3, NULL as F4, NULL as F5 
from Table1 
union all 
select ID, NULL as F1, NULL as F2, F3, F4, F5 
from Table2 
+1

+1:太簡單了:) – Juliet 2010-04-21 15:20:40

+0

謝謝,但這並不容易。前兩個表格是隨着時間而增長的Excel表格的查詢結果,並且用於獲取它們的查詢字符串是編程式構建的。我無法預測會有多少田地。可以有F6,F7 ......他們是動態的。 – phoenies 2010-04-21 15:31:34

+2

@phoenies:當你事先不知道模式時,那麼SQL幾乎就是使用錯誤的語言。 *或者*您將不得不編寫**根據某種機制生成** SQL的代碼。 – 2010-04-21 16:30:35

0

也許你可以做兩個子查詢生成一個永遠不會相等的假連接鍵的完整外連接。通過這種方式,您可以使用select *來獲取兩個表中存在的任何列。

select * from 
(select 1 as MY_ID, Table1.* from Table1) AS A 
FULL OUTER JOIN 
(select 2 as MY_ID, Table2.* from Table2) AS B 
ON A.MY_ID = B.MY_ID 
相關問題