重新组织Access表(将行转换为列)

时间:2014-02-07 16:50:01

标签: ms-access ms-access-2010

我有一个数据库,其中有两个相似的字段(与另一个表匹配),然后第三个是唯一的。我想将表转换为列中列出的第3个唯一值,而不是单独的记录。

即。

5/1/2013  A321  1  $1,120
5/2/2013  A325  1  $2,261
5/1/2013  A321  2  $2,120

将转换为

5/1/2013  A321  $1,120  $2,120
5/2/2013  A325  $2,261

我可以为第3列中的每个值创建单独的查询,然后让另一个查询以我希望的方式连接它们,但我希望有一个更优雅的解决方案。

2 个答案:

答案 0 :(得分:3)

对于[OldTable]中的测试数据

FieldA      FieldB  FieldC  FieldD
----------  ------  ------  ------
2013-05-01  A321         1    1120
2013-05-02  A325         1    2261
2013-05-01  A321         2    2120

交叉表查询

TRANSFORM First(FieldD) AS FirstOfFieldD
SELECT FieldA, FieldB
FROM 
    (
        SELECT
            FieldA,
            FieldB,
            'Value' & FieldC AS ColumnName,
            FieldD
        FROM OldTable
    )
GROUP BY FieldA, FieldB
PIVOT ColumnName

返回

FieldA      FieldB  Value1  Value2
----------  ------  ------  ------
2013-05-01  A321      1120    2120
2013-05-02  A325      2261        

如果要实际创建包含这些结果的新表,请将上述查询保存为Access [xtabQuery],然后运行

SELECT xtabQuery.* INTO NewTable
FROM xtabQuery;

答案 1 :(得分:1)

我会打开查询向导并创建一个交叉表查询。它应该提示您输入您想要的列和记录。

当向导写入查询时,只需在SQL视图中打开它并在FROM语句之前添加“INTO MyNewTable”即可将其转换为MakeTable查询。