【问题标题】:Re-organizing Access table (convert rows to columns)重新组织 Access 表(将行转换为列)
【发布时间】:2014-02-07 16:50:00
【问题描述】:

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

I.E.

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 列中的每个值创建单独的查询,然后有另一个查询以我希望的方式连接它们,但我希望有一个更优雅的解决方案。

【问题讨论】:

    标签: ms-access ms-access-2010


    【解决方案1】:

    对于[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;
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-19
        • 1970-01-01
        • 2018-03-15
        • 2021-04-22
        • 1970-01-01
        相关资源
        最近更新 更多