MS Access конвертировать строки в столбцы с помощью сводной - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть таблица с ~ 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 голосов
/ 10 апреля 2019

Поскольку Pivot работает с значением столбца, а не с именем , вам не повезло. Это проблема с поворотом - он довольно ограничен в своей гибкости.

На этом этапе вы обычно возвращаетесь к коду. Например, вы можете построить набор результатов в VBA в массиве вариантов варианта.

Или вы можете использовать VBA для подсчета максимального количества столбцов для любого продукта, создать временную таблицу с соответствующими именами столбцов и вставить значения в соответствующие строки.

В любом случае, это действительно UI проблема сексуального отображения для пользователя, а не передачи данных из одного запроса в другой, для чего и предназначен SQL.

...