2011-12-13 118 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

相关问题