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

Posted

技术标签:

【中文标题】将2个数据表转换为一个表【英文标题】:Convert 2 datatable to one table 【发布时间】:2017-03-19 16:43:53 【问题描述】:

我有桌子健康:

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

和表钱:

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

我想让一个 tmp 表看起来像这样: 临时表

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 中这样做吗?

【问题讨论】:

通过表之间的常规外连接,您可以获得该结果 s , left join 可以加入这两个表 【参考方案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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

是SQL查询,你可以参考一下

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

【讨论】:

这不是我想要的。 Table Health 没有年份(2014 年和 2018 年)。如果我使用 join on 或诸如 Heath.Year = Money.Year 之类的东西,我将不会从表 Health and Money 中获得一整年 你可以加入这些人的 id 而不是年份。 (获取我使用左连接的所有值)或者您可以再使用一个查询并将其合并【参考方案4】:

创建您想要的表并使用连接查询来填充数据。

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

【讨论】:

【参考方案5】:

我认为您可以使用完全外连接而不是左连接来做到这一点。

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

【讨论】:

以上是关于将2个数据表转换为一个表的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL 将数据从行转换为列

如何将EXCEl中多张Sheet工作表转换成一个PDF

如何将EXCEl中多张Sheet工作表转换成一个PDF

将大量数据转换为 C# 对象

可以将 Excel 表转换为数据库表的 Java API [关闭]

如何将EXCEl中多张Sheet工作表转换成一个PDF