SQLITE -правильное перемещение строк в столбцы

У меня есть база данных, содержащая таблицу для заказа товаров, подобную этой:

order_id | prod_code | prod_color | size | quantity |  
-----------------------------------------------------
1          SHIRT       001          S      10
1          SHIRT       001          M      7
1          SHIRT       001          L      8
1          SHIRT       001          XL     1
1          SHIRT       995          S      2
1          SHIRT       995          M      1
1          SHIRT       995          L      0
1          SHIRT       995          XL     1
2          PANTS      ....

и таблица цен на продукты, подобная этой:

prod_code | prod_color | price | currency
-----------------------------------------
SHIRT       001          10      EUR
SHIRT       001          9       USD
SHIRT       001          50      YEN
SHIRT       001          15      RUB
SHIRT       995          20      EUR
SHIRT       995          29      USD
SHIRT       995          100     YEN
SHIRT       995          45      RUB 
PANTS      ....  

то, что я хотел бы получить, это представление, подобное этому (для простоты, отфильтрованное по заказу _id):

order_id | prod_code | prod_color | size | quantity | EUR | USD | YEN | RUB
---------------------------------------------------------------------------
1          SHIRT       001          S      10         10    9     50    15
1          SHIRT       001          M      7          10    9     50    15
1          SHIRT       001          L      8          10    9     50    15
1          SHIRT       001          XL     1          10    9     50    15
1          SHIRT       995          S      2          20    29    100   45
1          SHIRT       995          M      1          20    29    100   45
1          SHIRT       995          L      0          20    29    100   45
1          SHIRT       995          XL     1          20    29    100   45

Я уже просмотрел Интернет и через SO, и я нашел ЭТОТ ВОПРОС , который показывает мне, что именно мне нужно сделать, но я думаю, что с некоторыми изменениями...

Я попытался выполнить этот запрос в базе данных:

SELECT o.order_id, o.prod_code, o.prod_color, o.size, o.quantity,
MAX(CASE WHEN p.currency = 'EUR' THEN p.price END) AS 'EUR',
MAX(CASE WHEN p.currency = 'USD' THEN p.price END) AS 'USD',
MAX(CASE WHEN p.currency = 'YEN' THEN p.price END) AS 'YEN',
MAX(CASE WHEN p.currency = 'RUB' THEN p.price END) AS 'RUB'
FROM products_order o JOIN products_prices p ON o.prod_code = p.prod_code
WHERE o.order_id = 1
GROUP BY o.order_id, o.prod_code, o.prod_color, o.size, o.quantity

вернет в столбцах цен для каждой строки максимальное значение, найденное во всем столбце :, поэтому как для [продукт _цвет = 001], так и для [продукт _цвет = 995] у меня есть цена равна 20 ЕВРО (когда на 001 дешевле, всего 10 евро!)

Я также пробовал без MAX, но он дает мне одну строку для каждой цены, оставляя много ячеек пустыми (, тогда я понял, что MAX используется для :D ).

Вы знаете способ сделать то, что я пытаюсь сделать? Как я могу использовать MAX внутри одного цвета продукта _вместо каждого цвета продукта _?

Я надеюсь, вы понимаете, что я написал, заранее спасибо, любая помощь приветствуется.

(если вам нужно что-то объяснить более четко, просто спросите, и я как можно скорее отвечу.

Еще раз спасибо, с уважением

5
задан Community 23 May 2017 в 12:17
поделиться