同様のデータを 1 つの列にグループ化できるクエリを探しています。基本的に、注文アイテムを表すテーブルがあります。各注文項目は注文に属します。注文アイテムには、金額、単位あたりの価格 (ppu)、ppu の通貨 (cur)、およびその他のコスト (それぞれの通貨のコスト) があります。イメージング、テーブルには次のデータがあります。
id | id_order | amount | ppu | ppu_cur | costsA | costsA_cur | costsB | costsB_cur
1 | Ord1 | 20 | 10 | EUR | 5 | USD | 15 | EUR
2 | Ord1 | 8 | 20 | EUR | 0 | | 15 | EUR
3 | Ord1 | 15 | 50 | USD | 10 | USD | 0 |
4 | Ord2 | 50 | 25 | EUR | 10,50 | EUR | 15 | EUR
今、私が必要としているのは、次のように価格をグループ化できるクエリです。
id_order | curr | price_total
Ord1 | EUR | 390
Ord1 | USD | 505
Ord2 | EUR | 1275,5
情報: 「0」の価格または通貨のない価格は無視する必要があります。
残念ながら、私は ppu のみでこれを行うことができました:
SELECT "sub"."id", "sub"."cur", SUM("sub"."price_total")
FROM (
SELECT "ord"."id" AS "id", ("oi"."amount" * "oi"."ppu") AS "price_total", "oi"."cur" AS "cur"
FROM "orders" "ord", "orderitems" "oi"
WHERE
("oi"."id_order" = "ord"."id") AND
(("oi"."cur" IS NOT NULL) AND ("oi"."cur" <> '')) AND
("oi"."price" <> 0)
) "sub"
GROUP BY "sub"."id", "sub"."cur"
誰かがこの問題を解決する方法を知っていますか?
前もって感謝します :)
編集: 各注文価格は、通貨に基づいて計算する必要があります。たとえば、「Ord1」には 2 つの異なる通貨 (EUR、USD) があります。したがって、結果には "Ord1" の 2 つの行が含まれている必要があります。一方、「Ord2」には通貨(EUR)が1つしかありません。したがって、結果には "Ord2" の行が 1 つだけ含まれます。
計算: 同じ通貨の各 costX/ppu を追加する必要があります。さらに、ppu に金額を掛ける必要があります。「Ord1」の例:
EUR: (20 * 10 + 15) + (8 * 20 + 15)
USD: (5) + (15 * 50 + 10)
情報:この例には 2 つの異なる通貨しかありません。ただし、通貨の数に制限はありません。