2011-12-13 45 views
1

鑑於表和查詢:如何基於另外兩個表格撰寫表格?

CREATE TABLE #samples1 (SampleID int, ValueA float) 
CREATE TABLE #samples2 (SampleID int, ValueB float) 

INSERT INTO #samples1 VALUES (2, 2.0), (3, 3.0), (4, 4.0) 
INSERT INTO #samples2 VALUES (1, 1.5), (2, 2.5), (3, 3.5) 

SELECT * FROM #samples1 FULL JOIN #samples2 ON #samples1.SampleID=#samples2.SampleID --?? 

DROP TABLE #samples1 
DROP TABLE #samples2 

我怎麼能合併他們兩個?這個查詢的結果並不完全是我所需要的。我想合併這兩個表並保留在ValueA和ValueB上都具有值的樣本,但也只是其中任何一個上的值。其結果將包含樣品編號1,2,3和4

+1

驗證你在想的像聯盟的東西? – colinjwebb 2011-12-13 17:26:04

+0

不,因爲UNION會將ValueA和ValueB放入同一列 – Jonas 2011-12-13 17:57:41

回答

0
SELECT SampleID, ValueA 
    FROM #samples1 
UNION ALL 
select SampleID, ValueB 
    FROM #samples2 
0

如果您使用SQL Server 2008中,你可能使用merge statement到一個表合併到另一個。

這種說法提供了案例幫你處理像上面兩個表有一個ID 2.所以,你可以做類似的情況:

WHEN MATCHED THEN 
    <ignore the result> 
WHEN NOT MATCHED THEN 
    <insert new record into table> 
0
SELECT A.SampleID, ValueA, ValueB FROM #samples1 A 
    LEFT JOIN #samples2 B ON A.SampleID=B.SampleID 
UNION 
SELECT A.SampleID, ValueA, ValueB FROM #samples2 A 
    LEFT JOIN #samples1 B ON A.SampleID=B.SampleID 

HERE

相關問題