将2个数据表转换为一个表

时间:2016-11-06 06:11:41

标签: c# sql sql-server database sql-server-2008

我有表生:

Year   | Value1   | Value2
2015    Good       Good
2016    Bad        Good
2017    Bad        Bad

和表Money:

Year   | Money1   |Money2
2014    100        200
2015    300        null
2018    500        500

我想让tmp表看起来像这样: tmpTable

Year   |Value1   |Value2   |Money1   |Money2
2014    Null      Null      100       200
2015    Good      Good      300       Null
2016    Bad       Good      Null      Null
2017    Bad       Bad       Null      Null
2018    Null      Null      500       500

我可以在SQL Server中执行此操作吗?

5 个答案:

答案 0 :(得分:1)

使用2个LEFT联接并使用UNION合并LEFT个联接的结果集。

<强>查询

select t1.[Year], t1.[Value1], t1.[Value2], t2.[Money1], t2.[Money2]
from [Health] t1
left join [Money] t2
on t1.[Year] = t2.[Year]
union
select t1.[Year], t2.[Value1], t2.[Value2], t1.[Money1], t1.[Money2]
from [Money] t1
left join [Health] t2
on t1.[Year] = t2.[Year]
order by 1;

SQL Fiddle demo

答案 1 :(得分:0)

如果两个表都需要Year,那么您可以在表Health和Money之间使用外连接。

答案 2 :(得分:0)

这是SQL查询,你可以参考这个

  select A.Year,A.Value1,A.Value2, B.Money1,B.Money2 from Health A left join Money B on B.Year=A.Year

答案 3 :(得分:0)

创建您想要的表格&amp;使用连接查询来填充数据。

create table tmpTable( Year data_type(size), Value1 data_type(size), Value2 data_type(size), Money1 data_type(size), Money2 data_type(size) );

insert into tmpTable (Year,Value1,Value2, Money1, Money2) select t1.Year, t1.Value1, t1.Value2, t2.Money1, t2.Money2 from Health t1 inner join Money t2 on t1.Year = t2.Year

答案 4 :(得分:0)

我认为你可以使用完整的外连接而不是左连接。

选择A.Year,A.Value1,A.Value2,B.Money1,B.Money2来自Health A完全外部加入Money B on B.Year = A.Year