访问:将行转换为具有许多不同行值的列

时间:2018-03-14 10:06:18

标签: ms-access rows

让我开始说我知道可以使用TRANSFORM命令将行转换为列。实际上,我已经了解到,在这个伟大的网站上,我有足够的理由注册:)

我遇到的问题是我想将行转换为列,而行中的每个不同值都将成为唯一列。 我将尝试通过Access表的示例对其进行解释,请参阅链接中的图片:picture of query

此查询显示产品(第一列loar_aid),其中包含描述产品的文本。每个产品都有一个值tekst1,tekst2和tekst3。 但是列tregel1可以包含最多3个不同的文本,用于1个产品。我想将这个tregel1转换为3列:tregel1_firstValue,tregel1_secondValue,tregel1_thirdValue,如果你知道我的意思。

最终我想用这个表作为源(标签上的每一列规则)制作标签。因此,理想情况下,这些值应该彼此相邻。

有人可以帮我解决这个问题吗? 非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

您需要每个唯一组的记录序列ID。以下内容依赖于自动编号ID字段,以便为原始表中的每个记录提供唯一标识符,以在DCount()表达式中定义排序顺序。

TRANSFORM First(Table3.tregel1) AS FirstOftregel1
SELECT Table3.loar_aid, Table3.tekst2, Table3.tekst3
FROM Table3
GROUP BY Table3.loar_aid, Table3.tekst2, Table3.tekst3
PIVOT DCount("*","Table3","loar_aid='" & [loar_aid] & "' AND tekst1='" & [tekst1] & "' AND tekst2='" & [tekst2] & "' AND Nz(tekst3,'None')='" & Nz([tekst3],"None") & "' AND ID<" & [ID])+1;

请注意,使用DCount()或嵌套子查询的此类查询可能会在非常大的数据集上执行缓慢。