SQLITE - Zeilen richtig in Spalten umwandeln

Ich habe eine Datenbank mit einer Tabelle für die Produktreihenfolge:

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       ....

und eine Produktpreistabelle wie diese:

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       ....  

Was ich gerne bekommen würde, ist eine Ansicht wie diese (der Einfachheit halber gefiltert nach order_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

Ich habe bereits im Internet und in SO nachgesehen und gefundenDIESE FRAGE das zeigt mir genau was ich tun muss, aber ich denke mit ein paar modifikationen ...

Ich habe versucht, diese Abfrage in der Datenbank auszuführen:

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

In den Preisspalten wird für jede Zeile der in der gesamten Spalte gefundene MAX-Wert zurückgegeben: Sowohl für [product_color = 001] als auch für [product_color = 995] habe ich einen Preis von 20 EURO (wenn es für 001 nur billiger ist) 10 euro!)

Ich habe es auch ohne MAX versucht, aber es gibt mir eine Zeile für jeden Preis, so dass viele Zellen leer sind (dann habe ich verstanden, wofür MAX verwendet wird: D).

Kennen Sie eine Möglichkeit, das zu tun, was ich versuche? Wie kann ich MAX in einer einzelnen prod_color statt in jeder prod_color verwenden?

Ich hoffe, Sie können verstehen, was ich geschrieben habe, danke im Voraus, jede Hilfe wird geschätzt.

(Wenn Sie etwas genauer erklären möchten, fragen Sie einfach und ich werde so schnell wie möglich antworten.

Nochmals vielen Dank, viele Grüße

Antworten auf die Frage(1)

Ihre Antwort auf die Frage