我有一张约有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
如何扩展查询以获得所需的结果?
答案 0 :(得分:0)
由于数据透视表适用于列的 value 而不是其 name ,因此您很不走运。这就是旋转的问题-它的灵活性相当有限。
在这一点上,您通常恢复为代码。例如,您可以在VBA中以变体数组的形式构建结果集。
或者,您可以使用VBA计算任何产品的最大列数,使用适当命名的列创建临时表,然后将值插入适当的行中。
无论哪种方式,这实际上是向用户显示性感的 UI 问题,而不是将数据从一个查询传递到下一个查询,这正是SQL的目的。