我有一个数据库,其中有两个相似的字段(与另一个表匹配),然后第三个是唯一的。我想将表转换为列中列出的第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列中的每个值创建单独的查询,然后让另一个查询以我希望的方式连接它们,但我希望有一个更优雅的解决方案。
答案 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查询。