MS Access - konwersja wierszy na kolumny z użyciem PIVOT

0

Na początek chciałbym się serdecznie przywitać.

Z bazami danych mam sporadyczny kontakt, przeszło 9 lat temu tworzyłem proste kwerendy i formularze w MS Access 2003 i wykorzystywałem je w programie SubiekGT.

Mam tabelę z produktami i zdjęciami (ponad 9000), każdy produkt może posiadać do kilku obrazków. Kolumna ordering odpowiada za kolejność wyświetlania zdjęć na stronie www. Struktura jest następująca:

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

Stworzyłem kwerendę w Accesie:

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;

Wynik jest następujący:

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

Chciałbym posegregować dane w taki sposób, aby pierwsze i kolejne zdjęcia były obok siebie dla konkretnego produktu:

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

Czy można rozbudować powyższą kwerendę z użyciem PIVOT sposób jak potrzebuję? Oczywiście można to ręcznie wyklinać w Excelu, ale chciałbym to zautomatyzować.

1

Tak coś na szybko, chyba pasuje:

TRANSFORM First(Table1.Photo) AS FirstOfPhoto
SELECT Table1.Product
FROM Table1
GROUP BY Table1.Product
PIVOT Table1.Ordering;

Taki wynik:
screenshot-20190410123258.png

Takie dane wej:
screenshot-20190410123327.png

0

Wielkie dzięki, działa jak najbardziej. Stawiam <piwo>. :) Moja kwerenda była zbyt rozbudowana, był także błąd w komendzie PIVOT.

1 użytkowników online, w tym zalogowanych: 0, gości: 1