MS Access使用数据透视

时间:2019-04-10 09:32:00

标签: ms-access pivot transform

我有一张约有6500种产品和图片的表格,其中每个产品可以有多个jpg文件:

ID_product      product       product_photo  ordering
1               Product A     a1234.jpg      1
2               Product B     x5678.jpg      0
3               Product A     b1234.jpg      0
4               Product B     y5678.jpg      1
5               Product B     z5678.jpg      2
6               Product C     e4455.jpg      1
7               Product C     f4455.jpg      0
8               Product C     g4455.jpg      2

所以我在MS ACCESS中创建了一个查询:

TRANSFORM First([table1].product_photo) AS product
SELECT [table1].ID_product, First([table1].product) AS products
FROM [table1]
GROUP BY [table1].ID_product
PIVOT [table1].product_photo;

查询结果:

ID_product  product         a1234_jpg   b1234_jpg   e4455_jpg   f4455_jpg   g4455_jpg   x5678_jpg   y5678_jpg   z5678_jpg
1           Product A       a1234.jpg   b1234.jpg                       
2           Product B                                                                   x5678.jpg   y5678.jpg   z5678.jpg
3           Product C                               e4455.jpg   f4455.jpg   g4455.jpg

我想以这样的方式更改表,使图像位于列中:

ID_product      product             image_1    image_2     image_3
1               Product A           a1234.jpg  b1234.jpg
2               Product B           x5678.jpg  y5678.jpg   z5678.jpg
3               Product C           e4455.jpg  f4455.jpg   g4455.jpg

如何扩展查询以获得所需的结果?

1 个答案:

答案 0 :(得分:0)

由于数据透视表适用于列的 value 而不是其 name ,因此您很不走运。这就是旋转的问题-它的灵活性相当有限。

在这一点上,您通常恢复为代码。例如,您可以在VBA中以变体数组的形式构建结果集。

或者,您可以使用VBA计算任何产品的最大列数,使用适当命名的列创建临时表,然后将值插入适当的行中。

无论哪种方式,这实际上是向用户显示性感的 UI 问题,而不是将数据从一个查询传递到下一个查询,这正是SQL的目的。