【发布时间】:2013-12-18 15:05:55
【问题描述】:
我正在尝试将某些已售商品的收入与这些商品的保修成本进行比较。我的代码看起来像:
SELECT DISTINCT od.orderID, pa.partID, pa.price AS revenue, wa.cost AS warcost, co.description AS wardesc
FROM orders od
LEFT OUTER JOIN parts pa ON pa.orderID = od.orderID
LEFT OUTER JOIN warranties wa ON pa.partID = wa.partID
LEFT OUTER JOIN malfunctions ml ON ml.malfID = wa.malfID
LEFT OUTER JOIN components co ON ml.compID = co.compID
返回类似下面的内容。
orderID | partID | revenue | warcost | wardesc<br>
1 | 1001 | 100 | 45 | Issue #1<br>
1 | 1001 | 100 | 50 | Issue #2<br>
1 | 1002 | 200 | 55 | Issue #3<br>
2 | 1003 | 300 | 65 | Issue #3<br>
2 | 1003 | 300 | 70 | Issue #4
按顺序分组,我想对战争成本求和,但只按各个部分 ID 对收入求和,所以收入不计算两次。我发现这是不可能的!
最终结果应该如下所示,期待一些帮助!
orderID | partID | revenue | warcost | wardesc<br>
1 | 1001,1002 | 300 | 150 | Issue #1, Issue #2, Issue #3<br>
2 | 1003 | 300 | 135 | Issue #3, Issue #4
【问题讨论】:
-
这是在mysql中吗?并考虑扩展您想要进行的收入计算。
-
是的,这是在 mysql 中。对于收入,如果我不清楚,对不起。目标只是将每个订单中零件的收入相加 - 但在此示例中,仅使用 SUM(revenue) 会导致重复计算零件 1001 和 1003。
-
我添加了一个答案,如果您的结果与您执行该查询时的结果相同,请告诉我您是否仍然看到重复项
标签: sql group-by sum group-concat