MS Access将来自多行的数据合并为一个

时间:2015-09-03 05:29:49

标签: ms-access-2007

我有一个具有此类数据的访问数据库,我想编写一个将输出组合行的查询。我已经研究了联合和其他事情,但我们并没有真正掌握他们如何做我想做的事情。

Person   Company    Item1   Item2  Item3  
1        A          5         
2        A                  3
3        A                         4
4        B          3            
5        B                  2
6        B                         1

将它与

相结合
Company       Item1   Item2   Item3
A             5       3       4
B             3       2       1 

每个公司应该只有一个Item1,我意识到如果我有双倍可能会有问题。但这是另一个问题。

1 个答案:

答案 0 :(得分:0)

正如您所提到的,如果单个公司的每个项目有更多,肯定会出现问题,但这可能更多的是数据库设计问题,所以我们不要进入那个问题! :)

项目值的总计/总和

如果"项目1","项目2","项目3和#34;等下的数字是要一起计算/总和,那么你就很容易查询你的手:

SELECT Company, Sum(Item1) AS Item1Total, Sum(Item2) AS Item2Total, Sum(Item3) AS Item3Total
FROM test
GROUP BY Company;

查找第一个非NULL项值

如果您需要为每个项找到第一个非NULL值,那么您的查询将会更复杂一些。此示例使用子查询为当前公司的每个项目列/字段查找第一个非NULL条目:

SELECT t0.Company, (
    SELECT TOP 1 t1.Item1
    FROM test AS t1
    WHERE t1.Company = t0.Company
    AND t1.Item1 IS NOT NULL
) AS Item1Total, (
    SELECT TOP 1 t2.Item2
    FROM test AS t2
    WHERE t2.Company = t0.Company
    AND t2.Item2 IS NOT NULL
) AS Item2Total, (
    SELECT TOP 1 t3.Item3
    FROM test AS t3
    WHERE t3.Company = t0.Company
    AND t3.Item3 IS NOT NULL
) AS Item3Total
FROM test AS t0
GROUP BY Company;