Microsoft Access / SQL - 用于组合不完整表中的行的查询

时间:2013-10-28 14:10:28

标签: sql ms-access

我有几个数据源,每个都提供了一些事实。为了理解全貌,我需要能够编写一个查询,将来自所有源的数据组合到一个表中。我的数据很复杂,所以我将提供一个简单的例子来尝试理解这个概念。

我给出了Table1和Table2。我需要将它们组合起来填充空白并创建主数据源(表3)。我们假设始终提供序列号。

表1(给定)

serial1 name1   city1   country1    OS1
123     pc-123                      windows 7
124     pc-124  Tampa   US          Windows XP
125     pc-125  Sydney  AU          Windows 7
126             Tempe   US

表2(给定)

serial2 name2   city2   country2    OS2
123     pc-123  Atlanta US          
124                     US          Windows XP
125                                 
126     pc-126                      Windows XP


表3(我要创建的内容)

serial  name    city    country     OS
123     pc-123  Atlanta US          windows 7
124     pc-124  Tampa   US          Windows XP
125     pc-125  Sydney  AU          Windows 7
126     pc-126  Tempe   US          Windows XP


是否有一个简单的联合,左连接,SQL的组合我可以写执行这个?我一直在寻找论坛,但找不到任何类似的东西。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果serial是唯一的(意味着每个序列中每个表都有0..1行,并且它们始终相关)并且您不关心冲突中的值,您可以执行以下操作: / p>

SELECT serial, MAX(name) AS name, MAX(city) AS city, 
    MAX(country) AS country, MAX(OS) AS OS
FROM (
    SELECT serial1 AS serial, name1 AS name, city1 AS city, 
        country1 AS country, OS1 AS OS
    FROM Table1
    UNION ALL
    SELECT serial2 AS serial, name2 AS name, city2 AS city, 
        country2 AS country, OS2 AS OS
    FROM Table2
) AS x
GROUP BY serial