需要创建一个sql视图来计算佣金&运输费用。每件商品的运费,但是他们会在订单ID级别收费,可以有多个订单商品请查看附件中的图片。请注意,运费是订单ID级别。而不是订单商品ID级别。对于运费收入行,订单商品ID列为空白。因此,为了获得运费,我们需要将订单中的商品除以
订单商品ID不是该订单中的商品,每个订单ID可以包含一个或多个订单商品ID image of view required
SELECT main.order_id, main.order_item_id, COALESCE(P.a,0) + COALESCE(C.a,0) - (COALESCE(S.a,0) / main.c) AS price
FROM
(((SELECT order_id, order_item_id, count(*) as c FROM main GROUP BY order_id, order_item_id) main LEFT OUTER JOIN
(SELECT amount AS a FROM main WHERE description='Principal') P ON main.order_id =P.order_id AND main.order_item_id = P.order_item_id) LEFT OUTER JOIN
(SELECT amount AS a FROM main WHERE description='Commission') C ON main.order_id=C.order_id AND main.order_item_id = C.order_item_id) LEFT OUTER JOIN
(SELECT amount AS a FROM main WHERE description='Shipping Charges') S ON main.order_id=S.order_id AND main.order_item_id = S.order_item_id
上面是sql查询,它给出了一个错误#1054 - 'on clause'中的未知列'P.order_id'可以帮助我纠正得到所需的结果,如附图所示。
答案 0 :(得分:0)
试试这个
SELECT main.order_id, main.order_item_id, COALESCE(P.a,0) + COALESCE(C.a,0) - (COALESCE(S.a,0) / main.c) AS price
FROM
(((SELECT order_id, order_item_id, count(*) as c FROM main GROUP BY order_id, order_item_id) main LEFT OUTER JOIN
(SELECT main.order_id,main.order_item_id,amount AS a FROM main WHERE description='Principal') P ON main.order_id =P.order_id AND main.order_item_id = P.order_item_id) LEFT OUTER JOIN
(SELECT main.order_id,main.order_item_id,amount AS a FROM main WHERE description='Commission') C ON main.order_id=C.order_id AND main.order_item_id = C.order_item_id) LEFT OUTER JOIN
(SELECT main.order_id,main.order_item_id,amount AS a FROM main WHERE description='Shipping Charges') S ON main.order_id=S.order_id AND main.order_item_id = S.order_item_id