3 回答
TA贡献1963条经验 获得超6个赞
这个查询...
SELECT ID, A, B, C, [Key 1] AS key_field
FROM tblUnpivotSource
UNION ALL
SELECT ID, A, B, C, [Key 2] AS key_field
FROM tblUnpivotSource
UNION ALL
SELECT ID, A, B, C, [Key 3] AS key_field
FROM tblUnpivotSource;
...返回此记录集(使用示例表值作为tblUnpivotSource)...
ID A B C key_field
-- - - - ---------
1 x y z 3
2 x y z 57
1 x y z 199
2 x y z 234
1 x y z 452
2 x y z 452
TA贡献1808条经验 获得超4个赞
不幸的是,没有简单的方法可以通过访问来做到这一点。您可以使用UNION来获取每个值
SELECT ID, A, B, C, [Key 1] As key
FROM Table
WHERE [Key 1] = 3
UNION ALL
SELECT ID, A, B, C, [Key 1] As key
FROM Table
WHERE [Key 1] = 57
UNION ALL
SELECT ID, A, B, C, [Key 2] As key
FROM Table
WHERE [Key 2] = 199
UNION ALL
SELECT ID, A, B, C, [Key 2] As key
FROM Table
WHERE [Key 2] = 234
UNION ALL
SELECT ID, A, B, C, [Key 3] As key
FROM Table
WHERE [Key 3] = 452
TA贡献1820条经验 获得超2个赞
您可以创建一个以所有列名称为值的辅助表(可以使用excel将表的第一行复制到excel>粘贴特殊>转置)
在表中创建一个自动增量列,并为此列编制索引
创建一个新的交叉联接查询,如下所示
SELECT ID, A, B, C
, AUX_TABLE.KEY_FIELD
, DLookUp("[" & [AUX_TABLE].[KEY_FIELD] & "]","TABLE","[ID] = " & [TABLE].[ID]) AS KEY_VALUE
FROM TABLE, AUX_TABLE;
不利的一面是您必须AUX_TABLE保持这种状态。但是,如果这是一次性的事情,那么这可能是一条路。
- 3 回答
- 0 关注
- 771 浏览
添加回答
举报